首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TableOfContents对象发布的Word 2013中的VBA

使用TableOfContents对象发布的Word 2013中的VBA
EN

Stack Overflow用户
提问于 2015-04-09 14:42:31
回答 2查看 332关注 0票数 1

在我编辑了一堆东西之后,我试图在我的宏中更新我的目录。不过,我遇到了一个奇怪的问题。下面是我正在运行的片段。

注意: user_document被全局声明为文档对象。它可以在这个函数中访问。

代码语言:javascript
复制
Private Sub RunBuild_Click()
    Dim TOC As TableOfContents
    With user_document
        For Each TOC In .TableOfContents  'ERROR OCCURS HERE
            TOC.Update
        Next
    End With
    user_document.Save
End Sub

当我运行它时,我得到一个对象不支持这个属性或方法错误。我似乎不明白为什么不能通过循环访问这个文档中的TableOfContents对象。每个块应该枚举对象的集合,这样我就可以循环它们,但是它的作用就好像这个概念不存在一样。我看过其他文章,用于更新使用这种确切类型的循环并且没有问题的所有目录。

如果我用这条线

代码语言:javascript
复制
user_document.TableOfContents(1).Update

命令运行得很好。但是,这不允许我捕捉到不存在TOC的情况,或者当存在多个TOC时,它只更新第一个实例。

有什么想法吗?我很困惑。我不断重写循环,尝试不同的方式访问对象,但它们都抛出了相同的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-09 14:51:00

Edit1:是我的坏蛋。如果您像这样编写代码,那么代码应该可以工作:

代码语言:javascript
复制
Dim TOC as TableOfContents ' without s on Table

With user_document
    For Each TOC In .TablesOfContents ' with s on Table
        TOC.Update
    Next
End With

但是下面的工作应该也很好。

代码语言:javascript
复制
Dim i As Long

With user_document
    For i = .TablesOfContents.Count To 1 Step -1
        .TablesOfContents(i).Update
    Next 
End With

这是假定user_document是正确设置的文档对象。

票数 0
EN

Stack Overflow用户

发布于 2015-04-09 15:06:42

我已经想明白了。

我声明的TOC对象类型为" TableOfContents ",但是Document对象包含一个TablesOfContents对象,其中包含单独的TableOfContents对象。

下面的代码正确地循环通过结构。

代码语言:javascript
复制
Private Sub RunBuild_Click()
    Dim TOC As TableOfContents

    With user_document
        For Each TOC In .TablesOfContents
            TOC.Update
        Next
    End With

    user_document.Save
End Sub

这也解释了为什么我在没有得到更有意义的错误的情况下遇到了问题--我错误地访问了有效的对象,而不是正确地访问了无效的对象。由于word并不担心对象无效,所以我甚至没有想到检查对象的单数/复数命名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29541661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档