See my last reply.
But if it is as your last description (i.e., only after a literal question mark), then:
Code:
Sub AngleQuotationMarks()
Dim iType As Long
Dim oRng As Range
Options.AutoFormatAsYouTypeReplaceQuotes = False
For iType = 1 To 1 '2
On Error GoTo lbl_Exit
Set oRng = ActiveDocument.StoryRanges(iType)
With oRng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Text = "(\?)" & "(^0171)"
.Replacement.Text = "\1" & "^0187"
.Execute Replace:=wdReplaceAll
End With
Next iType
lbl_Exit:
Options.AutoFormatAsYouTypeReplaceQuotes = True
Exit Sub
End Sub