首页 > 解决方案 > 如何使用 VBA 在 Microsoft Word 中的目录后提取隐藏文本?

问题描述

我有一个要求,我必须在 Word 文档中的目录之后提取两行文本。文本被隐藏并添加仅用于 VBA。

我做了一些研究,发现我可以使用该Range对象从单词 Document 中提取文本,因此我尝试对其进行硬编码,并通过使用得到了我想要的值

MsgBox ActiveDocument.Paragraphs(43).Range.Text

现在,此代码可以用于特定文档,但对于新文档,我不知道目录将在哪里结束以及我必须从中提取的确切行号。

任何帮助表示赞赏并提前感谢。

标签: vbams-word

解决方案


这有点棘手,因为字段对象没有范围,因此您必须寻找字段结果的范围。一旦你有了结果范围,你就可以得到它所在的段落范围,然后是下一个段落的范围,然后当你得到那个段落的文本时。听起来很复杂,但当您了解 Word 对象模型的工作原理后,实际上非常简单。

Sub Test()

    Debug.Print GetTextAfterToc

End Sub

Public Function GetTextAfterToc() As String

    Dim myfield As Word.Field
    
    For Each myfield In ActiveDocument.StoryRanges(wdMainTextStory).Fields
    
        If myfield.Type = wdFieldTOC Then
        
            GetTextAfterToc = myfield.Result.Paragraphs(1).Range.Next(unit:=wdParagraph, Count:=1).Text
            Exit Function
            
        End If
        
    Next
    
End Function

推荐阅读