When documents with footnotes are converted to Word from other programs, the footnotes may come across as plain text, with the footnote links simply showing as superscripted numbers or numbers enclosed in brackets. The following macro processes such footnotes in a selected range, turning them into 'proper' Word footnotes, retaining their formatting (eg bold/italic/underline).
The macro assumes:
• The selected range contains the footnotes to be converted, with the first footnote number being, at most, enclosed in square brackets, thus [#], followed by a space. Comments in the code indicate where to make changes to suit other scenarios. If the footnotes are scattered throughout the document, rather than at the end, for example, the code will process the selected footnote text on each page
• you’ll be using the 'Footnote Text' style footnotes. If not, you can simply change it in the line:
.Style = "Footnote Text"
• each footnote consists of a single paragraph. If you have any multi-paragraph footnotes, you can get around that issue by changing their internal paragraph markers to line feeds (i.e. Shift-Enter) before running the macro.
The macro shows its progress on the status bar.
Code:
Sub ReLinkFootNotes()
Dim i As Long, j As Long, k As Long, l As Long, FtRng As Range
Application.ScreenUpdating = False
With ActiveDocument
Set FtRng = Selection.Range
With FtRng
.Style = "Footnote Text"
With .Find
.ClearFormatting
.Replacement.ClearFormatting
' Change '[' and ']' on the next line to whatever is appropriate if the selected
' footnotes' numbers are enclosed in characters other than square brackets
' (e.g. .Text = "([0-9]{1,})" if there are no brackets)
.Text = "\[([0-9]{1,})\]"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindStop
.Format = True
' Delete the next line if the footnote references are not superscripted.
.Font.Superscript = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
k = .Paragraphs(1).Range.Words(1) - 1
j = k
l = ActiveDocument.Footnotes.Count - k
For i = 1 To .Paragraphs.Count
If .Paragraphs(i).Range.Words(1) = j + 1 Then
j = j + 1
End If
Next i
End With
For i = k + 1 To j
StatusBar = "Finding Footnote Location: " & i + l
With .Content.Find
' Change '"[" & i & "]"' string on the next line to whatever is appropriate
' if the in-line references are not enclosed in square brackets
.Text = "[" & i & "]"
' Delete/comment out the next line if not applicable
.Font.Superscript = True
.MatchWholeWord = True
.MatchWildcards = False
.Execute
If .Found = True Then
.Parent.Select
With Selection
.Delete
.Footnotes.Add Range:=Selection.Range, Text:=""
End With
End If
End With
Next i
With FtRng
For i = k + 1 To j
StatusBar = "Transferring Footnote: " & i + l
With .Paragraphs(1).Range
.Cut
With ActiveDocument.Footnotes(i + l).Range
.Paste
.Words(1).Delete
.Characters.Last.Delete
End With
End With
Next i
On Error Resume Next
End With
Set FtRng = Nothing
End With
Application.ScreenUpdating = True
End Sub
How the code works:
• Take the selected footnote paragraphs, strip off any enclosing characters from the numbers.
• Apply the footnote style to the selected footnote paragraphs
• Count the number of bookmarked paragraphs with sequential numbers, starting at the first paragraph’s footnote number.
• Find the corresponding footnote numbers in the document
• Turn the matched numbers into empty footnotes
• Cut & Paste the footnote paragraphs into the empty footnotes
• Delete the first word (footnote number) and last character (duplicate para mark) from each footnote.
For PC macro installation & usage instructions, see:
http://www.gmayor.com/installing_macro.htm