![]() |
|
#1
|
||||
|
||||
![]()
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] |
#2
|
|||
|
|||
![]()
Hi Macropod thank you so much for your time and effort on this, it is very much appreciated. The contract documents I am working on are template precedent documents and our house style requires that all square brackets in template documents are form text fields so the user can F11 through them and remove as required. Your revised code unfortunately doesn't fix the issue - I did think a solution could be unlink the fields, move the footnotes then relink the form text fields - I will look into this further at a later date, for now I will just move the footnotes refs before punctuation when they appear without square brackets.
|
#3
|
||||
|
||||
![]() Quote:
Replace: Code:
If .Characters.First.Previous.Fields.Count = 1 Then Exit Do If .Characters.First.Previous.ContentControls.Count = 1 Then Exit Do Code:
If (.Characters.First.Previous.Fields.Count = 1) And (.Characters.First.Previous.Fields(1).Result <> "]") Then Exit Do If (.Characters.First.Previous.ContentControls.Count = 1) And (.Characters.First.Previous.ContentControls(1).Range.Text <> "]") Then Exit Do
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#4
|
|||
|
|||
![]()
Hi Macropod, I have updated the code but am getting an error 5941 on this line:
Code:
If (.Characters.First.Previous.Fields.Count = 1) And (.Characters.First.Previous.Fields(1).Result <> "]") Then Exit Do |
![]() |
Thread Tools | |
Display Modes | |
|
![]() |
||||
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 |