![]() |
#9
|
||||
|
||||
![]()
The ] before the 42, for example, is a formfield. It seems to me there are more fundamental problems with your document than just the footnote references. It is not at all clear to me why you would have such formfields or how the code should determine whether to relocate a reference to before a formfield.
In the meantime, here's a more refined version of the code: Code:
Sub EndNoteFootNotePunctCheck() Application.ScreenUpdating = False Dim i As Long With ActiveDocument 'Process EndNotes For i = .Endnotes.Count To 1 Step -1 Call SetPunctAfter(.Endnotes(i).Reference) Next 'Process FootNotes For i = .Footnotes.Count To 1 Step -1 Call SetPunctAfter(.Footnotes(i).Reference) Next 'Process EndNote/FootNote References For i = .Range.Fields.Count To 1 Step -1 With .Range.Fields(i) If .Type = wdFieldNoteRef Then Call SetPunctAfter(.Result) End If End With Next End With Application.ScreenUpdating = True End Sub Sub SetPunctAfter(Rng As Range) With Rng.Duplicate .Collapse wdCollapseStart 'Eliminate any spaces before the footnote reference Do While .Characters.First.Previous Like "[ " & Chr(160) & "]" .Characters.First.Previous.Text = vbNullString Loop 'Find the preceding puctuation, bracket, etc. Do While .Characters.First.Previous Like "[!0-9A-Za-z" & vbCr & Chr(11) & vbTab & "]" If .Characters.First.Previous.Fields.Count = 1 Then Exit Do If .Characters.First.Previous.ContentControls.Count = 1 Then Exit Do .Start = .Start - 1 Loop 'Swap the footnote/punctuation, as applicable If .Start <> Rng.Start Then Rng.Collapse wdCollapseEnd Rng.FormattedText = .FormattedText .Text = vbNullString End If End With End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
emblaw | Word | 4 | 12-08-2020 06:23 AM |
![]() |
KDuncan | Word | 6 | 04-28-2020 12:14 AM |
![]() |
michaelbriordan | Word | 3 | 06-17-2015 10:12 AM |
![]() |
bearligirl89 | Word | 3 | 11-20-2013 03:33 PM |
![]() |
jimgard | Word | 1 | 07-23-2013 11:47 AM |