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.