This adaptation of Paul's code seems to work to move the after a " ' and .
Code:
Sub FootnoteEndnoteFix()
Application.ScreenUpdating = False
Dim FtNt As Footnote, EndNt As Endnote, Rng As Range
With ActiveDocument
For Each FtNt In .Footnotes
Set Rng = FtNt.Reference
While Rng.Characters.First.Previous.Text = " "
Rng.Characters.First.Previous.Text = vbNullString
Wend
'Swap the footnote/punctuation, as applicable
Do
Set Rng = FtNt.Reference
Select Case Rng.Characters.Last.Next
Case ".", ",", "!", "?", ":", ";", "'", """", ChrW(8221), ChrW(8217)
Rng.InsertBefore Rng.Characters.Last.Next
Rng.Characters.Last.Next.Delete
Case Else
Exit Do
End Select
Loop
Next
For Each EndNt In .Endnotes
Set Rng = FtNt.Reference
While Rng.Characters.First.Previous.Text = " "
Rng.Characters.First.Previous.Text = vbNullString
Wend
'Swap the footnote/punctuation, as applicable
Do
Set Rng = FtNt.Reference
Select Case Rng.Characters.Last.Next
Case ".", ",", "!", "?", ":", ";", "'", """", ChrW(8221), ChrW(8217)
Rng.InsertBefore Rng.Characters.Last.Next
Rng.Characters.Last.Next.Delete
Case Else
Exit Do
End Select
Loop
Next
End With
Application.ScreenUpdating = True
End Sub