如何用vba获取word文档的Selection对象所在的标题样式级别?

如下图所示为某个word文档中的当前选中内容

如果要用vba获取当前选中内容所在的标题样式所在的级别,也就是上图中的“2.3.2 整合性”,可以使用如下的vba代码:

Sub QQ1722187970()
    Dim oRng As Range
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Dim oBM As Bookmark
    Dim oP As Paragraph
    '定位当前的Selection对象所在的所有标题及其子标题的文本所在的区域
    Set oBM = oDoc.Bookmarks("\HeadingLevel")
    Set oRng = oBM.Range
    With oRng
       '获取所在的标题样式级别的第一个段落
       Set oP = .ListParagraphs(1)
       '获取所在的标题样式级别的编号
       sNum = .ListFormat.ListString
       '整个标题样式级别所包含的所有文本
       sText = .Text
       '输出"2.32 整合性"
       Debug.Print sNum & " " & oP.Range.Text
    End With
End Sub

上述代码,使用了word中的预定义书签“\HeadingLevel”定位当前的选择区域所在的标题及其所有子标题的文本。

由于上图word文档中当前的选择区域属于最底层的标题级别,所以不再包含其他子标题,如果选择的区域位于“2.3 设计原则”,则会包含其下属的各个子标题的文本。

 

       

发表评论