У меня есть список ключевых слов, которые мне нужно искать в документах Word.
Я создал скрипт, который выполняет поиск в документе и выделяет все найденные экземпляры, в том числе соответствующие всем формам слова (т. Е. Исправляют, исправляют, крепления). После обработки появляется окно сообщения, которое должно суммировать количество найденных экземпляров для каждого слова.
Проблема в том, что, хотя подпрограмма выделения позволяет использовать все формы слова (.MatchAllWordForms = True), я пропущено что-то для подсчета, так что подсчитываются только точные совпадения.
Можете ли вы помочь мне обновить это так, чтобы все слова и словоформы были выделены и суммированы в окне сообщения?
'
' Highlight Macro
Sub HighlightKeywords()
Dim range As range
Dim i As Long
Dim Keywords
' put list of terms to find here
Keywords = Array("wrong", "broke", "fix", "swap", "missing", "mistake", "revert", "oops", "backwards", "shatter", "drop")
For i = 0 To UBound(Keywords)
Set range = ActiveDocument.range
With range.Find
.Text = Keywords(i)
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = True
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdYellow
Loop
End With
Next
ReDim numfound(0 To UBound(Keywords))
For Each wrd In ActiveDocument.Words
idx = 0
For Each var In Keywords
If Trim(wrd.Text) = Keywords(idx) Then
numfound(idx) = numfound(idx) + 1
End If
idx = idx + 1
Next var
Next wrd
idx = 0
For Each var In Keywords
strResults = strResults & Keywords(idx) & " : " & _
numfound(idx) & vbCr
idx = idx + 1
Next var
MsgBox strResults
End Sub