单词前面标题的文本

时间:2012-05-24 16:17:35

标签: word-vba

鉴于Word中任何选定的单词或段落,有没有办法使用VBA查找最近的前一个标题的文本?

例如:

标题级别1:主标题  这是关于该文件的段落。 (一个) 标题级别2:子标题  本段描述了一个细节。(B)

如果选择(B)的任何部分,我想找到“A Sub Title”。如果选择(A)的任何部分,我想找到“主标题”。

2 个答案:

答案 0 :(得分:2)

这是你在尝试的吗?

Option Explicit

Sub Sample()
    Do
        Selection.MoveUp Unit:=wdLine, Count:=1

        Selection.HomeKey Unit:=wdLine
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend

        If ActiveDocument.ActiveWindow.Selection.Information(wdFirstCharacterLineNumber) = 1 Then Exit Do
    Loop Until Selection.Style <> "Normal"

    MsgBox Selection.Style
End Sub

<强>快照

enter image description here

答案 1 :(得分:2)

前一个标题有一个特殊的WdGoToItem

Dim heading As Range
Set heading = selection.GoTo(What:=wdGoToHeading, Which:=wdGoToPrevious)

' Display heading text
heading.Expand Unit:=wdParagraph
MsgBox heading.Text

这是从文档中的任何位置获取整个当前标题级别的一个鲜为人知的技巧:

Dim headingLevel as Range
' headingLevel encompasses the region under the preceding heading
Set headingLevel = Selection.GoTo(What:=wdGoToBookmark, Name:="\HeadingLevel")