Good question this one, you can loop through the whole document using the Selection.Find.Found
result.
What you do is start a search and if you find a result go into a loop only while the Selection.Find.Found
result is true. Once you’ve got through these, you’re done. The following code should do the trick nicely for you.
Sub SearchFN()
Dim iCount As Integer
'Always start at the top of the document
Selection.HomeKey Unit:=wdStory
'find a footnote to kick it off
With Selection.Find
.ClearFormatting
.Text = "&&FB:*&&FE"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute
End With
'If we find one then we can set off a loop to keep checking
'I always put a counter in to avoid endless loops for one reason or another
Do While Selection.Find.Found = True And iCount < 1000
iCount = iCount + 1
'Jump back to the start of the document. Since you remove the
'footnote place holder this won't pick up old results
Selection.HomeKey Unit:=wdStory
Selection.Find.Execute
'On the last loop you'll not find a result so check here
If Selection.Find.Found Then
''==================================
'' Do your footnote magic here
''==================================
'Reset the find parameters
With Selection.Find
.ClearFormatting
.Text = "&&FB:*&&FE"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
End If
Loop
End Sub