In the text below, I've added comments in bold/italic to make my point.
It is not uncommon to use repeating design elements in a document. For instance, you may want all occurrences of a particular word to appear in bold italics, at a certain point size. While you can certainly do the formatting by hand, it is much more efficient to allow a macro to do the work for you. Actually, it's more efficient to define a character style that can store the formatting based upon the function that the certain word performs within the document. By handling the formatting in this way, you don't need to worry about remembering how the word should appear. And you wouldn't have to worry about remembering how the word should appear if you were to set up a character style. This macro, FormatWords, is an example of such a macro.
Sub FormatWords() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "Warning!" .Replacement.Text = ""When you run this macro, it searches for all occurrences of the word Warning (followed by an exclamation point) and changes the.Replacement.Font.Bold = TrueNo! Use .Replacement.Style.Warning.Replacement.Font.Italic = TrueIf you use the above line, you don't need this line. .Forward = True .Wrap = wdFindContinue .MatchWholeWord = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
The only reason this tip came to my attention is that I have an email alert set up to receive emails when there is a new comment. On November 3, 2014, there was this comment left:
Rasmus 03 Nov 2014, 07:34
Hi.
Can I use this macro to make several different words in bold?
Best Regards Rasmus
This is what I was going to post as a comment on the site, but it turned into a longer "comment" than I wanted.
Yes, you can use this macro to replace several words. Personally, I would not use this macro as written. I would define a character style called "Warning" and define it as bold / italic. Then I would change the macro code. Instead of defining the 'replacement' values as bold and italic, I would replace it with the defined character style. In this way, if you use the same template for multiple documents, you can control the formatting across all of those documents with a character style.
Manually replacing "Warning" with bold and italic will put a Band-Aid on the document and get you what you want, but you should definitely consider whether you want to have a character style to control the formatting.
To answer your question, you can change the .Text line and the formatting you want to apply, as shown below:
---------------------------------------------------------------------------------------------------------
.Text = "Warning!" <== Change this word .Replacement.Text = "" <== don't change this line .Replacement.Font.Bold = True <== change this line .Replacement.Font.Italic = True <== change this line---------------------------------------------------------------------------------------------------------
For example, if you wanted to replace "Warning!" with bold/italic as well as "Note:" with bold, the macro would look like this:
Sub FormatWords() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "Warning!" .Replacement.Text = "" .Replacement.Font.Bold = True .Replacement.Font.Italic = True .Forward = True .Wrap = wdFindContinue .MatchWholeWord = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "Note:" .Replacement.Text = "" .Replacement.Font.Bold = True .Forward = True .Wrap = wdFindContinue .MatchWholeWord = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub------------------------------------------------------------------------------------------------------------------
Again, I would define a character style called "Warning" and a character style called "Note" and use those character styles instead of manual formatting.
Using character style to control formatting is the only way I ever want to work in MS Word.
No comments:
Post a Comment