I think the code got tripped up with the multiple cross-references to the same endnotes. Try:
Code:
Sub Test()
Application.ScreenUpdating = False
Dim Fld As Field, EndNtRng As Range, FldRng As Range, i As Long, j As Long, Rng As Range, RngFld As Field
With ActiveDocument
For Each Fld In .Fields
If Fld.Type = wdFieldNoteRef Then
Set FldRng = Fld.Code
i = Fld.Result
While FldRng.Fields.Count = 0
FldRng.End = FldRng.End + 1
Wend
Set EndNtRng = .Endnotes(i).Reference
If EndNtRng.End > FldRng.End Then
FldRng.Fields(1).Delete
EndNtRng.Cut
FldRng.Paste
FldRng.Style = "EndNote Reference"
j = FldRng.Endnotes(1).Index
EndNtRng.InsertCrossReference ReferenceType:="Endnote", ReferenceKind:= _
wdEndnoteNumberFormatted, ReferenceItem:=j, InsertAsHyperlink:=True
If FldRng.Characters.First = " " Then FldRng.Characters.First = vbNullString
Set Rng = FldRng
Rng.End = ActiveDocument.Range.End
If i <> j Then
For Each RngFld In Rng.Fields
If RngFld.Type = wdFieldNoteRef Then
If RngFld.Result = i Then
Set FldRng = RngFld.Code
While FldRng.Fields.Count = 0
FldRng.End = FldRng.End + 1
Wend
FldRng.Fields(1).Delete
FldRng.InsertCrossReference ReferenceType:="Endnote", ReferenceKind:= _
wdEndnoteNumberFormatted, ReferenceItem:=j, InsertAsHyperlink:=True
End If
End If
Next
End If
End If
.Fields.Update
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Note that this may leave some of your reference sequences out of order, but at least it gets the endnote:cross-reference arrangement right.