Microsoft Office Forums

Go Back   Microsoft Office Forums > >

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #17  
Old 08-24-2022, 08:32 PM
macropod's Avatar
macropod macropod is offline VBA Move Footnote References Before Punctuation Windows 10 VBA Move Footnote References Before Punctuation Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,523
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

Try:
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
      If .Characters.First.Previous.Fields(1).Result = "]" Then
        .Start = .Characters.First.Previous.Fields(1).Result.Start + 1
      Else
        Exit Do
      End If
    End If
    If .Characters.First.Previous.ContentControls.Count = 1 Then
      If .Characters.First.Previous.ContentControls(1).Range.Text = "]" Then
        .Start = .Characters.First.Previous.ContentControls(1).Range.Start + 1
      Else
        Exit Do
      End If
    End If
    .Start = .Start - 1
  Loop
  'Swap the footnote/punctuation, as applicable
  If .Start <> Rng.Start Then
    Rng.Collapse wdCollapseEnd
    .Cut
    Rng.Paste
  End If
End With
End Sub
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
 



Similar Threads
Thread Thread Starter Forum Replies Last Post
VBA Move Footnote References Before Punctuation Footnote references in the footnote section losing their style when cut+pasted from same doc emblaw Word 4 12-08-2020 06:23 AM
VBA Move Footnote References Before Punctuation Fix footnote and endnote references to arabic numbers everywhere? KDuncan Word 6 04-28-2020 12:14 AM
VBA Move Footnote References Before Punctuation Word Find won't move out of footnote michaelbriordan Word 3 06-17-2015 10:12 AM
VBA Move Footnote References Before Punctuation How do I keep footnote references and text on the same page bearligirl89 Word 3 11-20-2013 03:33 PM
VBA Move Footnote References Before Punctuation Multiple footnote references jimgard Word 1 07-23-2013 11:47 AM

Other Forums: Access Forums

All times are GMT -7. The time now is 12:46 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft