4

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

例如:

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

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

4

2 回答 2

3

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")
于 2015-05-29T22:52:28.963 回答
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

快照

在此处输入图像描述

于 2012-06-05T02:17:23.263 回答