我有一个word文档,我想找到所有单词,如下所示:ABC-12:123456 DEF。如果在文档中找到这个词,则应选择该词并以粗体显示。 (稍后我会添加超链接而不是粗体)。我已成功找到该单词并将其放入MatchCollection中以尝试RegExp。它看起来像:
Sub searchDocument()
Set matchPattern = New RegExp
matchPattern.Pattern = "ABC-\d{2}:\d{6} DEF"
matchPattern.Global = True
Dim matchPatternWords As MatchCollection
Set matchPatternWords = matchPattern.Execute(ActiveDocument.Range)
For Each matchPatternWord In matchPatternWords
MsgBox (matchPatternWord)
Next matchPatternWord
End Sub
答案 0 :(得分:2)
您需要从正则表达式匹配转到表示匹配的范围对象。
matchRange = ActiveDocument.Range
(matchPatternWord.FirstIndex, matchPatternWord.FirstIndex+matchPatternWord.Length)
将是明显的调用。
然而this post表示此方法可能存在问题,因为格式化可能会弄乱字符数。这是从2010年开始的,所以现在问题可能会以更好的方式得到解决。
如果上述方法不起作用,或者您不相信,则可以这样做;
matchRange = ActiveDocument.Range.Find(FindText:=matchPatternWord.Value)
如果同一个词的多次出现是可能的话,后者需要更多的处理。
一旦你有了范围就可以直接进行。
matchRange.Bold = True