Written by Allen Wyatt (last updated October 31, 2024)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365
Curt has a list of words that he needs to have shown in red in a rather long document. Searching for each of the words using Find and Replace works, but it is quite tedious. Curt wonders if there is a way (perhaps using a macro) to process the document for each of the words in the list.
In order to accomplish this, it really is best to turn to a macro. Why? Because a macro can make quick work of tedious steps. Let's say, for instance, that you want to replace the words video, element, chart, and button (four individual words) with the same word, but in red. You could use a macro such as the following:
Sub ChangeWordColors() Dim vWords As Variant Dim sWord As Variant vWords = Array("video", "element", "chart", "button") For Each sWord In vWords Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Color = wdColorRed With Selection.Find .Text = sWord .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Next sWord End Sub
The macro first assigns the four words to an array named vWords. Each element of the array is then stepped through and a Find and Replace operation is performed. Because the operation sets the .MatchWholeWord property to True, then only whole words that match these four will be matched. (In other words, searching for element will not result in elements being a match.
The drawback to such a macro is that if you want to use a different set of words, you need to edit the macro so that it assigns those other words (or phrases) to the array. You may, instead, want to store the words in a text file. This can be done by modifying the macro, as follows:
Sub ChangeWordColorsFile() Dim sFile As String Dim sTemp As String sFile = "C:\Users\abcd\Desktop\MyWords.txt" Open sFile For Input As 1 While Not EOF(1) Line Input #1, sTemp sTemp = Trim(sTemp) If sTemp > "" Then Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Color = wdColorRed With Selection.Find .Text = sTemp .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End If Wend Close #1 End Sub
This version of the macro relies on a file called MyWords.txt. Near the beginning of the macro you can see that this filename (actually, a complete path to this filename) is assigned to the sFile variable. It is this file that is opened and read, one line at a time, to indicate what words should be searched for and changed to red. If you want to change how the macro does its work, just change what is in the MyWords.txt file. Just be sure to put only a single word or phrase on each line of the file.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (13773) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365.
Learning Made Easy! Quickly teach yourself how to format, publish, and share your content using Word 2013. With Step by Step, you set the pace, building and practicing the skills you need, just when you need them! Check out Microsoft Word 2013 Step by Step today!
When you format bulleted lists or numbered lists, you may be surprised if some of the bullets or numbers don't match the ...
Discover MoreWord allows you to change the character of how your pages are designed by using multiple sections in a document. If you ...
Discover MoreFormal reports look better when they are set up with an introductory cover page. Here's how you can add a cover page in a ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2021-12-01 04:36:43
Viktor Gustafsson
I tried to modify the code to instead of changing font color i wanted to highlight the text. However the macro doesnt seem to work. It flashes through a few words and half of my tries have marked a couple of the words but not all.
-------------
Sub HightlightKeywords()
Dim sFile As String
Dim sTemp As String
sFile = "C:\Users
ame\Desktop\MyKeywords.txt"
Open sFile For Input As 1
While Not EOF(1)
Line Input #1, sTemp
sTemp = Trim(sTemp)
If sTemp > "" Then
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = wdColorGray25
With Selection.Find
.Text = sTemp
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
Wend
Close #1
End Sub
------------------
I'm quite confused as to what might be wrong. Had it just not worked at all i would understand but i get no errors or anything, just half of the time nothing happends and the otehr half almost nothing happends....
I work with SEO and in swedish (language is set to english on all programs) maybe has something to do with it? We use ÅÄÖ which maybe confuses the macro? Doesn't seem like it (because sometimes it marks correctly) but it's my only idea right now.
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments