Written by Allen Wyatt (last updated July 17, 2024)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, and 2021
Jason is a student editor of an academic law journal. As part of the publication process, he needs to check every sentence for plagiarism and accuracy and every citation to ensure proper formatting and support. This basically means every sentence must be supported by a citation placed in a footnote. Currently the staff manually copies and pastes every text sentence, footnote, and footnote number from the author's manuscript (a Word document) into a staff editor's Word document that is then used for checking. Jason wonders if there is a way to automate this process of copying over the "footnote number," "sentence from the article document" and "original footnote content" from the manuscript source document into the worksheet document.
Each of the tasks mentioned by Jason can be done programmatically, with some irritating exceptions. It is not that difficult to step through the footnote and endnote collections, in VBA, and extract information from them. This information can then be moved to a new document that could be used as the editor's worksheet. The irritating part is that the footnote and endnote numbers are dynamic, and therefore not that easy to access. A full discussion of this irritant can be found at this site:
http://www.vbaexpress.com/forum/showthread.php?31231
Exactly how you might go about making a macro to do the information transfer from one document to another depends, in large part, on the characteristics of the information in the author's document. For instance, does the author's document include one or two spaces after a sentence? Does it allow multiple footnotes per sentence? Does it allow endnotes in addition to footnotes? Does it include tables?
The point is that there are any number of considerations that can affect the development of a macro. This means that any macros will need to be finely tuned to the source document you are working with—which means lots of testing. To give you a starting point, however, consider the following macros. They will copy sentences, footnotes, and endnotes (if any) from a source document to a new document.
Sub FootnotesEndnotes()
Dim fNote As Footnote
Dim eNote As Endnote
Dim aRange As Range
Dim sText As String
Dim rText As String
Dim eRef As String
Dim newDoc As Document
Dim oldDoc As Document
Set oldDoc = ActiveDocument
Set newDoc = Documents.Add
sText = "---------------FOOTNOTES---------------" & vbCr
newDoc.Content.InsertAfter sText
oldDoc.Activate
For Each fNote In ActiveDocument.Footnotes
Set aRange = fNote.Reference
aRange.MoveStart unit:=wdSentence, Count:=-1
aRange.MoveEnd unit:=wdSentence
sText = aRange.Text
rText = fNote.Range.Text
With fNote.Reference.Characters.First
.Collapse
.InsertCrossReference wdRefTypeFootnote, _
wdFootnoteNumberFormatted, fNote.Index
eRef = .Characters.First.Fields(1).Result
Selection.Start = fNote.Reference.Start - Len(eRef)
Selection.End = fNote.Reference.Start
Selection.Delete
End With
Call WriteNewdoc(newDoc, sText, rText, eRef, "Footnote Text")
Next fNote
sText = "---------------ENDNOTES----------------" & vbCr
newDoc.Content.InsertAfter vbCr & vbCr & sText
For Each eNote In ActiveDocument.Endnotes
Set aRange = eNote.Reference
aRange.MoveStart unit:=wdSentence, Count:=-1
aRange.MoveEnd unit:=wdSentence
sText = aRange.Text
rText = eNote.Range.Text
With eNote.Reference.Characters.First
.Collapse
.InsertCrossReference wdRefTypeEndnote, _
wdEndnoteNumberFormatted, eNote.Index
eRef = .Characters.First.Fields(1).Result
Selection.Start = eNote.Reference.Start - Len(eRef)
Selection.End = eNote.Reference.Start
Selection.Delete
End With
Call WriteNewdoc(newDoc, sText, rText, eRef, "Endnote Text")
Next eNote
newDoc.Activate
End Sub
Sub WriteNewdoc(newDoc As Document, sText As String, rText As String, _
eRef As String, aStyle As String)
Dim sText1 As String
Dim sText2 As String
Dim dRange As Range
Dim k As Long
Dim curDoc As Document
Set curDoc = ActiveDocument
newDoc.Activate
k = InStr(sText, Chr(2))
If k = 1 Then sText = Mid(sText, 2) 'in case previous sentence has note
sText = Trim(sText)
k = InStr(sText, Chr(2))
If k = 0 Then
sText = sText & Chr(2)
k = Len(sText)
End If
If k > 1 Then
sText1 = Left(sText, k - 1)
Else
sText1 = ""
End If
If k = Len(sText) Then
sText2 = ""
Else
sText2 = Mid(sText, k + 1)
End If
If Len(sText2) > 0 Then
If Mid(sText2, Len(sText2), 1) = Chr(13) Then
sText2 = Left(sText2, Len(sText2) - 1)
End If
End If
Set dRange = newDoc.Content
dRange.Collapse Direction:=wdCollapseEnd
dRange.Select
With Selection
.InsertAfter vbCr & sText1
.Font.Superscript = False
.Collapse Direction:=wdCollapseEnd
.InsertAfter eRef
.Font.Superscript = True
.Collapse Direction:=wdCollapseEnd
.InsertAfter " " & sText2 & vbCr
.Font.Superscript = False
.Collapse Direction:=wdCollapseEnd
.InsertAfter eRef
.Font.Superscript = True
.Collapse Direction:=wdCollapseEnd
.InsertAfter " " & rText & vbCr & vbCr
.Font.Superscript = False
.Style = aStyle
End With
curDoc.Activate
End Sub
This is (again) just a starting point. You will need to test and tweak the macros with your documents to make sure they do what you expect.
If you are looking for additional resources to aid in developing such a macro, you might try this book. It is a freebie, and it may have some macros (or examples) that you can adapt to your specific purposes:
http://www.archivepub.co.uk/book.html
Don't be surprised if your macro becomes quite complex over time. This is to be expected anytime you create a macro to perform tasks that humans can do with relatively little thinking.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (12724) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, and 2021.
Do More in Less Time! An easy-to-understand guide to the more advanced features available in the Microsoft 365 version of Word. Enhance the quality of your documents and boost productivity in any field with this in-depth resource. Complete your Word-related tasks more efficiently as you unlock lesser-known tools and learn to quickly access the features you need. Check out Microsoft 365 Word For Professionals For Dummies today!
Do you need to step through a table, cell by cell, in a macro? It's easy to do using the Move method, as described in ...
Discover MoreWhile your macro is processing the text in your document, you may need a way to determine the current page number where ...
Discover MoreWhen processing a document with a macro, you may need to have the macro repaginate the text. It's easy to do using the ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2020-07-12 15:33:26
Kat
Hi, is there a way to do this but maintain the formatting of the original sentence/footnote/endnote? I noticed that it doesn't bring over italics, underlining, etc.
Is there another resource I should look at for adding these values into a form document as fields?
Thanks!
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2025 Sharon Parq Associates, Inc.
Comments