How to replace text in quotation marks with italic or highlighted text minus the quotes
Article contributed by Klaus Linke and Dave Rado
This is easy, using a wildcard search and replace.
To do it manually
1. |
First make sure “Replace straight quotes with Smart quotes” is ticked, on the “AutoFormat As You Type” tab under Tools + Autocorrect; and if you want to use a highlight in the replace, make sure the default highlight colour on the Reviewing toolbar is set to the colour you want. |
2. |
Then replace " with " (all quotation marks with themselves), which will replace any straight quotes in the document with smart quotes. |
3. |
Now do your wildcard Find and Replace. Your “Find What” text needs to be: (“)(*)(”) Note that the quotes must be smart quotes: you can paste them from the document into the “Find what:” box. Your Replace with text needs to be: \2 And in the
“Replace with:” box,
either select Format + Font + Italic, or Format + Highlight,
depending on your preference. |
4. |
Finally, remove any orpaned opening smart quotes
“ (as you might have if you'd had a quotation spanning more than one
paragraph), by replacing the opening quote character (which, as before, you can
cut and paste into the dialog from the document; don't type it) with nothing. |
See also: Finding and
replacing characters using wildcards
To do it with a macro
Either use:
Sub
ReplaceQuotesWithHighlight()
Dim SmartQtSetting As Boolean,
DefHighlight As Long
'Make sure smartquotes are turned on
SmartQtSetting = Options.AutoFormatAsYouTypeReplaceQuotes
Options.AutoFormatAsYouTypeReplaceQuotes = True
'Make sure highlight is set to the colour you want, e.g.:
DefHighlight = Options.DefaultHighlightColorIndex
Options.DefaultHighlightColorIndex = wdGreen
With Selection.Find
'Set parameters
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
'First do a replace to make sure quotes
are all smartquotes
.Format = False
.MatchWildcards = False
.Text = """"
.Replacement.Text = """"
.Execute Replace:=wdReplaceAll
'Then do the wilcard replace
.Replacement.Highlight = True
.Format = True
.Wrap = wdFindContinue
.MatchWildcards = True
'ChrW(8220) is the open quote character
and ChrW(8221) is the close quote
.Text = "(" & ChrW(8220) & ")(*)(" & ChrW(8221) & ")"
.Replacement.Text = "\2"
.Execute Replace:=wdReplaceAll
'Then remove any orphaned opening
quotes
.Format = False
.Wrap = wdFindContinue
.MatchWildcards = False
.Text =ChrW(8220)
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
'Clear dialog of all non-default
settings
.Text = ""
.Execute
End With
'Reset options to the way they were
Options.AutoFormatAsYouTypeReplaceQuotes = SmartQtSetting
Options.DefaultHighlightColorIndex = DefHighlight
End Sub
Or use:
Sub
ReplaceQuotesWithItalic()
Dim SmartQtSetting As Boolean
'Make sure smartquotes are turned on
SmartQtSetting = Options.AutoFormatAsYouTypeReplaceQuotes
Options.AutoFormatAsYouTypeReplaceQuotes = True
With Selection.Find
'Set parameters
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
'First do a replace to make sure quotes
are all smartquotes
.Format = False
.MatchWildcards = False
.Text = """"
.Replacement.Text = """"
.Execute Replace:=wdReplaceAll
'Then do the wilcard replace
.Replacement.Font.Italic = True
.Format = True
.Wrap = wdFindContinue
.MatchWildcards = True
'ChrW(8220) is the open quote character
and ChrW(8221) is the close quote
.Text = "(" & ChrW(8220) & ")(*)(" & ChrW(8221) & ")"
.Replacement.Text = "\2"
.Execute Replace:=wdReplaceAll
'Then remove any orphaned opening
quotes
.Format = False
.Wrap = wdFindContinue
.MatchWildcards = False
.Text = ChrW(8220)
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
'Clear dialog of all non-default
settings
.Text = ""
.Execute
End With
'Reset options to the way they were
Options.AutoFormatAsYouTypeReplaceQuotes = SmartQtSetting
End Sub