【发布时间】:2018-07-02 20:14:26
【问题描述】:
我是 word-vba 宏的初学者(但我非常适合 excel-vba),我正在寻找更新“表格表”。
我已经找到了如何为“目录”和“图表”(使用ActiveDocument.TablesOfContents(1).Update)执行此操作,但 Collection TableOfTables 不存在。
有人知道我必须做什么吗?
提前致谢,
【问题讨论】:
我是 word-vba 宏的初学者(但我非常适合 excel-vba),我正在寻找更新“表格表”。
我已经找到了如何为“目录”和“图表”(使用ActiveDocument.TablesOfContents(1).Update)执行此操作,但 Collection TableOfTables 不存在。
有人知道我必须做什么吗?
提前致谢,
【问题讨论】:
没有“表的表”对象或 TableOfTables 集合。 “表格”实际上只是一种“目录”。事实上,“图表”也是如此。如果您查看这些基础的域代码,您会看到所有三个都使用 TOC 域 - “表格”和“图表”将具有像 { TOC \h \z \c "Table" 这样的域代码} 和 { TOC \h \z \c "Figure" },分别。因此,如果您想更新其中任何一个(或您创建的任何自定义类型),但不一定是全部,您可以简单地遍历 TableOfContents 集合并检查 \c 开关后面的内容(如果存在)。同样,您可以遍历 TableOfContents 集合并更新其中的所有项目。因此:
Sub Demo()
Application.ScreenUpdating = False
Dim TOC As TableOfContents
For Each TOC In ActiveDocument.TablesOfContents
TOC.Update
'Or depending on what you want to update:
'TOC.UpdatePageNumbers
Next
Application.ScreenUpdating = True
End Sub
一种更简单的方法——适用于所有领域——是:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument
.Fields.Update
.PrintPreview
.ClosePrintPreview
End With
Application.ScreenUpdating = True
End Sub
【讨论】:
For k=1 to X ActiveDocument.TablesOfContents(k).update Next k 的东西 但是,它仅适用于 k=1 如果我检查 Count 我可以看到这个集合中只有一个项目
好的,感谢@macropod,我知道如何解决我的问题。 “表格”不是另一个目录,而是另一个数字表格 所以这是我的结局代码:
Public Sub UpdateAllFiles()
With ActiveDocument
.TablesOfContents(1).Update
.TablesOfFigures(1).Update
.TablesOfFigures(2).Update
End With
End Sub
【讨论】: