View Single Post
 
Old 02-11-2017, 10:20 PM
macropod's Avatar
macropod macropod is offline Windows 7 64bit Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 21,963
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

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
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote