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