更新单词中的目录

时间:2017-04-29 11:57:39

标签: vba ms-word word-vba

我的word文档有一个宏,用于更新所有字段和所有目录。

Sub UpdateFields()
    Dim oStory As Range
    For Each oStory In ActiveDocument.StoryRanges
        oStory.Fields.Update
        If oStory.StoryType <> wdMainTextStory Then
            While Not (oStory.NextStoryRange Is Nothing)
                Set oStory = oStory.NextStoryRange
                oStory.Fields.Update
            Wend
        End If
    Next oStory
    Set oStory = Nothing

    Dim TOC As TableOfContents
    For Each TOC In ActiveDocument.TablesOfContents
        TOC.Update
    Next
End Sub

然而,当它运行时,我收到此错误。

enter image description here
错误,然后调试
我很感激在解决问题方面提供任何帮助。

2 个答案:

答案 0 :(得分:3)

问题是由命名子UpdateFields引起的。由于未知原因,此名称在Word VBA中保留。将sub重命名为允许的名称(例如,FieldUpdates),代码将正常工作。

答案 1 :(得分:0)

抛出的错误表示为update指定的TableOfContents不存在。使用For ... Each循环访问其某些集合时,Word将产生此类错误。 Word编辑文档时可能已更改的TOC数量可能已更改。要避免该错误,请避免For ... Each枚举。请改用以下代码。

Dim i As Integer

With ActiveDocument
    For i = 1 To .TablesOfContents.Count
        .TableOfContents(i).Update
    Next i
End With