Home > OS >  How do I search and highlight multiple terms in Microsoft Word?
How do I search and highlight multiple terms in Microsoft Word?

Time:10-20

My goal is to be able to run this script and have the document search for and highlight a set number of terms, typically 10 terms. I figured out how to do this with enter image description here

After:

enter image description here

CodePudding user response:

Use your current routine as a function.

Here is an example.

Function FindAndMark(sText As String) ' UsingTheFindObject_Medium()
' https://stackoverflow.com/questions/69633517/how-do-i-search-and-highlight-multiple-terms-in-microsoft-word
' Charles Kenyon
'Declare Variables.
    Dim wrdFind As Find
    Dim wrdRng As Range
    Dim wrdDoc As Document

    'Grab the ActiveDocument.
    Set wrdDoc = Application.ActiveDocument

    'Define the Content in the document
    Set wrdRng = wrdDoc.Content

    'Define the Find Object based on the Range.
    Set wrdFind = wrdRng.Find

    'Define the parameters of the Search.
    With wrdFind
        'Search the text for the following term(s)
        .Text = sText
        .Format = True
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    '  Mark text
    Do While wrdFind.Execute = True
        'Change the color to Yellow.
        wrdRng.HighlightColorIndex = wdYellow
    Loop
    Set wrdFind = Nothing
    Set wrdRng = Nothing
    Set wrdDoc = Nothing
End Function

Sub MultiFindMark()
    ' https://stackoverflow.com/questions/69633517/how-do-i-search-and-highlight-multiple-terms-in-microsoft-word
    ' Charles Kenyon
    Dim i As Integer
    Const n As Integer = 4  ' set number (n) of terms in search
    Dim sArray(n) As String ' Create array to hold terms
    ' Assign values, starting at 0 and going to n-1
    Let sArray(0) = "Aenean"
    Let sArray(1) = "Pellentesque"
    Let sArray(2) = "libero"
    Let sArray(3) = "pharetra"
    For i = 0 To n - 1
        FindAndMark (sArray(i))
    Next i
    
End Sub
  • Related