Converting All Footnotes to Text (Chapter 7.2.3)

posted May 2, 2014, 9:59 AM by Wolf O'Rourc   [ updated May 5, 2014, 2:29 PM ]
Since self-publishing programs do not take kindly to Word footnotes, you need to convert all of them to text. One way is to convert them all to endnotes, then copy them to text. Word provides functions to convert all footnotes to endnotes and vice-verse.

AR: Click References | Footnotes dialog launcher (the tiny arrow in the bottom right corner of the Footnotes group.
BR: Click Insert | Reference | Footnotes.
In the Footnote and Endnote dialog box click [Convert].
Click the a radio button to convert footnotes to endnotes, endnotes to footnotes, or converting both to the other at the same time by clicking Swap footnotes and endnotes.

You can convert endnotes to text as described in chapter 7.2.3. If, instead, you want to change all footnotes to in-line text, the following code from will do the trick.

Sub ConvertFootNotesToText()

Dim afootnote As Footnote

Selection.GoTo What:=wdGoToLine, Which:=wdGoToLast
Selection.GoTo What:=wdGoToBookmark, Name:="\Para"
Selection.Style = wdStyleNormal
ActiveDocument.GoTo What:=wdGoToLine, Which:=wdGoToFirst
For Each afootnote In ActiveDocument.Footnotes
  Selection.GoTo What:=wdGoToFootnote, Count:=afootnote.Index
  Selection.GoTo What:=wdGoToBookmark, Name:="\HeadingLevel"
  Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  Selection.Collapse Direction:=wdCollapseEnd
  Selection.Range.InsertAfter _
    vbCr & "x" & afootnote.Index & "x " & afootnote.Range
  Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext
  Selection.GoTo What:=wdGoToBookmark, Name:="\Para"
  Selection.Style = wdStyleNormal
    afootnote.Reference.InsertBefore "x" & afootnote.Index & "x"
Next afootnote

For Each afootnote In ActiveDocument.Footnotes
Next afootnote

With Selection.Find.Replacement.Font
  .Superscript = True
End With

With Selection.Find
  .Text = "(x)([0-9]{1,})(x)"
  .Replacement.Text = "\2"
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

ActiveDocument.GoTo What:=wdGoToLine, Which:=wdGoToFirst
End Sub
Depending on your regional settings the separator for wildcard occurrences may be a semi-colon. If the at the end you are left with reference numbers surrounded by "x," try "{1;}" instead of "{1,}."