我正在使用Word的宏来访问单独保存的doc文件,该文件包含多个页面的长单词列表。单词列表doc的格式为,
FMS
CPR
ABC
...用换行符分隔每个单词。
宏需要突出显示列表中每个单词的首次使用。
现在,宏会突出显示该单词的每个用法,此外,当该单词成为另一个单词的一部分时,会突出显示该单词。例如,它在单词freeze中突出显示EZE,但它应该只在eze独立时突出显示。
有人可以帮忙解决问题, 1.仅限首次使用,和 2.如何确保它只捕获实际的单词,而不是所有包含该单词的其他单词?我似乎无法用VBA实现这一点。 我目前的代码:
Sub TD()
'
Dim sCheckDoc As String
Dim docRef As Document
Dim docCurrent As Document
Dim wrdRef As String
Dim wrdPara As Paragraph
sCheckDoc = "c:\check.docx"
Set docCurrent = Selection.Document
Set docRef = Documents.Open(sCheckDoc)
docCurrent.Activate
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = True
.Replacement.Text = "^&"
.Forward = True
.Format = True
.MatchWholeWord = True
.MatchCase = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
For Each wrdPara In docRef.Paragraphs
wrdRef = wrdPara.Range.Text
If Asc(Left(wrdRef, 1)) > 32 Then
' remove the paragraph mark:
wrdRef = Left(wrdRef, Len(wrdRef) - 1)
With Selection.Find
.Wrap = wdFindContinue
.Text = wrdRef
.Execute Replace:=wdReplaceAll
End With
End If
Next wrdPara
docRef.Close
docCurrent.Activate
End Sub
答案 0 :(得分:0)
尝试wdReplaceOne而不是wdReplaceAll。
.MatchWholeWord = True应该可以防止突出显示嵌入的字符串,但它似乎被忽略了。
我在ThisDocument后面的模块中测试了你的原始代码,它突出显示了来自check文档的所有实例,忽略了MatchWholeWord参数。在建议的编辑之后,代码突出显示了来自检查文档的最后一个字符串的第一个实例。现在我无法让程序工作。它运行但单词不突出显示。我从来没有在Word背后使用过VBA。希望这个改变对你有用。