给定 Word 中任何选定的单词或段落,有没有办法使用 VBA 来查找最近的前一个标题的文本?
例如:
标题级别 1:主标题 这是关于文档的段落。(A) 标题级别 2:副标题 本段描述了一个细节。(B)
如果选择(B)的任何部分,我想找到“A Sub Title”。如果选择(A)的任何部分,我想找到“主标题”。
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")
这是你正在尝试的吗?
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
快照