【问题标题】:Read Table of contents using vba使用 vba 读取目录
【发布时间】:2018-01-07 05:59:31
【问题描述】:

我试图在不阅读页码的情况下阅读 word 文档中的目录。我想读取表格并将其保存到数组中。编码不是我的强项,所以如果这个问题指向错误的领域,请提前道歉。我有以下内联代码,它读取表格和页码,但我不知道如何读取表格。

Dim sourceDocument As Document
Set sourceDocument = ActiveDocument

Dim myField As Field
For Each myField In sourceDocument.TablesOfContents(1).Range.Fields
    Debug.Print myField.result.Text ', Chr(13), "-") & " " & " Type: " & myField.Type

   DoEvents
Next

我将不胜感激。

谢谢,

罗比

【问题讨论】:

    标签: arrays vba ms-word tableofcontents


    【解决方案1】:

    这应该会让你上路:

    Public Function GetTOCItems(Optional ByVal fromDocument As Document = Nothing) As Variant
    
        If fromDocument Is Nothing Then _
            Set fromDocument = ActiveDocument
    
        Dim toc As TableOfContents
        Set toc = fromDocument.TablesOfContents(1)
    
        toc.IncludePageNumbers = False
    
        Dim tocText As Variant
        tocText = toc.Range.Text
    
        toc.IncludePageNumbers = True
    
        GetTOCItems = Split(tocText, Chr(13))
    
    End Function
    

    你可以这样称呼它:

    Dim tocItems as Variant
    tocItems = GetTOCItems
    

    【讨论】:

    • 非常感谢您回复我,非常感谢您的帮助。明天早上我会在我的桌面上尝试这个,让你知道我的进展情况。
    • 您好,我只是想让您知道您的建议非常有效,非常感谢您。
    • 我不想折磨你,但我能再问一个问题吗?我现在清理了代码并且它可以工作,但我认为它不够健壮。基本上,我希望代码通读目录,然后找到相应的word文档并复制相应标题下的内容。它工作正常,但对于某些文档,它会感到困惑并想要关闭主文档而不是它为标题找到的文档。我会将代码放在下一条评论中。谢谢
    • 这听起来应该是一个新问题而不是评论。
    • 嗨帕特里克,我很抱歉。这是我第一次访问该网站,我不确定该程序。我只是在一个新问题中发布这个吗?
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2012-11-25
    • 2012-09-16
    相关资源
    最近更新 更多