'Updating all fields in a Word document except those of type wdFieldDocVariable

I have a procedure which updates all fields in a document. However I would like to skip the wdFieldDocVariable, the item index should be Type.

Public Sub MyApplicationUpdate()
hdWriteInfoLog ("BEGIN MACRO:   MyApplicationUpdate")
Dim oTOC As TableOfContents
Dim oField As Field

' Update Fields in all document StoryRanges
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

' Update all TablesOfContents
For Each oTOC In ActiveDocument.TablesOfContents
    oTOC.Update
Next oTOC

hdWriteInfoLog ("END MACRO:     MyApplicationUpdate")
End Sub


Solution 1:[1]

I think, I have found the answer, I believe there is a more efficient way of doing this, but at least it works...

' Test procedure Public Sub MyApplicationUpdate() hdWriteInfoLog ("BEGIN MACRO: MyApplicationUpdate") Dim oTOC As TableOfContents Dim oField As Field Dim oField2 As Field

' Update Fields in all document StoryRanges
Dim oStory As Range
For Each oStory In ActiveDocument.StoryRanges
    For Each oField2 In oStory.Fields
        If Not oField2.Type = wdFieldDocVariable Then
            oField2.Update
        End If
    Next oField2

    If oStory.StoryType <> wdMainTextStory Then
        While Not (oStory.NextStoryRange Is Nothing)
            Set oStory = oStory.NextStoryRange
            ' oStory.Fields.Update
            For Each oField2 In oStory.Fields
                If Not oField2.Type = wdFieldDocVariable Then
                    oField2.Update
                End If
            Next oField2
        Wend
    End If
Next oStory
Set oStory = Nothing

' Update all TablesOfContents
For Each oTOC In ActiveDocument.TablesOfContents
    oTOC.Update
Next oTOC

hdWriteInfoLog ("END MACRO:     MyApplicationUpdate")

End Sub

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Grebencio Mihail