MS Word Macro to Highlight Text


I need to write a macro or other code to achieve the following goal when a document is opened.

1) Display the word document
2) Highlight any words in the document which are in the clipboard.

The request sound simple enough but thus far I am stumped as how to approach this.

Here is a samle of the clipboard contents:
Index of INC_DOCS  -  telephone and perry

P:\PUBLIC\INC_DOCS\86804.doc      6 Hits
P:\PUBLIC\INC_DOCS\36905.doc      4 Hits
P:\PUBLIC\INC_DOCS\97053.doc      3 Hits
P:\PUBLIC\INC_DOCS\86083.doc      2 Hits
P:\PUBLIC\INC_DOCS\53412.doc      2 Hits
P:\PUBLIC\INC_DOCS\62894.doc      2 Hits
P:\PUBLIC\INC_DOCS\93763.doc      3 Hits
P:\PUBLIC\INC_DOCS\46199.doc      3 Hits
P:\PUBLIC\INC_DOCS\80905.doc      2 Hits
P:\PUBLIC\INC_DOCS\90660.doc      3 Hits
P:\PUBLIC\INC_DOCS\97363.doc      3 Hits
P:\PUBLIC\INC_DOCS\85723.doc      7 Hits
P:\PUBLIC\INC_DOCS\96224.doc      3 Hits
P:\PUBLIC\INC_DOCS\85723.rtf      4 Hits
P:\PUBLIC\INC_DOCS\86177.doc      2 Hits
P:\PUBLIC\INC_DOCS\76956.doc      2 Hits
P:\PUBLIC\INC_DOCS\83505.doc      2 Hits
P:\PUBLIC\INC_DOCS\91948.doc      3 Hits
P:\PUBLIC\INC_DOCS\94205.doc      2 Hits
P:\PUBLIC\INC_DOCS\96517.doc      2 Hits
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

GrahamSkanConnect With a Mentor RetiredCommented:
If the order of the words is important you could try using wildcards to check and then
do a highlight find and replace on each word:

Find: telephone*perry

Otherwise you would have to check each word and only highlight the words if all were found.
Sub CallMultiFind()
    Dim SomeWords(1) As Variant
    SomeWords(0) = "telephone"
    SomeWords(1) = "perry"
    MultiFind ActiveDocument, SomeWords
End Sub
Sub MultiFind(Doc As Document, TheWords())
    Dim i As Integer
    For i = 0 To UBound(TheWords)
        If Not Doc.Range.Find.Execute(TheWords(i)) Then
            Exit Sub
        End If
    Next i
    For i = 0 To UBound(TheWords)
        With Doc.Range.Find
        .Text = TheWords(i)
        .Replacement.Highlight = True
        .Execute Replace:=wdReplaceAll
        End With
    Next i
End Sub

Open in new window

The approach that I would take is to open a new document, and paste the clipboard contents therein.

Then I would take each line and do a Find and Replace in the original document, the Replace to apply a highlighting colour to anything found.
systemssupplyAuthor Commented:
That sound logical but raises another question. In my example "Index of INC_DOCS  -  telephone and perry "

If I run a find and replace  the whole string will not be in the document. Rather, the words telephone, perry will be in the document.

How can I tell the find / replace to search for any of the words not the whole string?
I'm not quite sure that I understand the problem, but you if you want to find one or another of two words, you can do two successive searches.
systemssupplyAuthor Commented:
True, I could run two searches however, in my example I had two words in a boolean search setup. It could also be additional words. I think that I need to find a way to export these terms into some sort of array to search on.
All Courses

From novice to tech pro — start learning today.