View Single Post
 
Old 10-20-2017, 02:10 PM
macropod's Avatar
macropod macropod is offline Windows 7 64bit Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,467
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

The following macro should be fairly quick at updating your Index entries:
Code:
Sub IndexUpdater()
Application.ScreenUpdating = False
Dim i As Long, strStl As String, strRef As String
With ActiveDocument
  For i = 1 To .Fields.Count
    With .Fields(i)
      If .Type = wdFieldIndexEntry Then
        If .Code.Fields.Count = 1 Then
          With .Code.Fields(1)
            If .Type = wdFieldStyleRef Then
              strStl = .Code.Paragraphs(1).Style
              strRef = Split(Split(.Code.Text, "STYLEREF")(1), Chr(34))(1)
              If strRef <> strStl Then .Code.Text = Replace(.Code.Text, strRef, strStl)
            End If
          End With
        End If
      ElseIf .Type = wdFieldIndex Then
        .Update
      End If
    End With
  Next
End With
Application.ScreenUpdating = True
End Sub
As for your Tables of Contents, that may or may not need updating. The code for that, if you need it, is as simple as adding:
.TablesOfContents(1).Update
before the final 'End With'. Do note that a Tables of Contents inserted via References|Tables of Contents is far slower at updating than one created by inserting a TOC field. That's because the Tables of Contents inserted via References|Tables of Contents gets inserted in a kind of content control and it's that that imposes the performance hit.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote