Найти слово с помощью RegExp и полужирным шрифтом

У меня есть документ с текстом, где я хочу найти все слова как имеющие следующий макет: 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
1 ответ

Вам нужно перейти от регулярного выражения к объекту диапазона, представляющему совпадение.

matchRange = ActiveDocument.Range
 (matchPatternWord.FirstIndex, matchPatternWord.FirstIndex+matchPatternWord.Length)

было бы очевидным вызовом.

Однако это сообщение указывает, что могут возникнуть проблемы с этим подходом, потому что формирование может испортить количество символов. Это с 2010 года, хотя проблема теперь может быть решена лучше.

Если вышеуказанное не работает, или если вы не доверяете ему, вы можете это сделать;

matchRange = ActiveDocument.Range.Find(FindText:=matchPatternWord.Value)

Последнее требует немного больше обработки, если возможны множественные вхождения одного и того же слова.

Как только у вас есть диапазон, он прямо вперед.

matchRange.Bold = True

licensed under cc by-sa 3.0 with attribution.