#vba #ms-word
#vba #ms-word
Вопрос:
Я ищу решение, позволяющее выполнять поиск регулярных выражений в MS Word. Для достижения этой цели я использовал следующий код (он выделяет соответствующие строки; затем я могу искать экземпляры выделения с помощью встроенной функции поиска Word), но он ограничен только основным документом. Для моих целей крайне важно, чтобы я мог включать любые другие истории — особенно любые концевые примечания и / или сноски — в мои поисковые запросы.
Есть ли у кого-нибудь решение для включения примечаний в конце и сноски в поиск такого рода?
Sub RegexHighlight()
Set RegExp = CreateObject("VBScript.RegExp")
With RegExp
.Global = True
.Pattern = InputBox("Find what:")
For Each Match In RegExp.Execute(ActiveDocument.Range.Text)
ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex Match.Length) _
.HighlightColorIndex = wdYellow
Next
End With
End Sub
Комментарии:
1. Почему бы просто не выполнить цикл
ActiveDocument.StoryRanges
? Я не уверен, как это будет работать с регулярным выражением, поскольку я предпочитаю использовать встроенную функцию поиска Word с подстановочными знаками, но если вам нужно использовать регулярное выражение, с этого можно начать.
Ответ №1:
Вот пример, который выполняет поиск по всем историям
Sub RegexHighlight()
Dim Match As Object
Dim Pattern As String
Dim Story As Range
Pattern = InputBox("Find what:")
If Pattern = "" Then Exit Sub
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = Pattern
For Each Story In ActiveDocument.storyRanges
Do While Not Story Is Nothing
For Each Match In .Execute(Story)
Story.SetRange Match.FirstIndex, Match.FirstIndex Match.Length
Story.HighlightColorIndex = wdYellow
Next
Set Story = Story.NextStoryRange
Loop
Next
End With
End Sub
Комментарии:
1. Спасибо! Это именно то, что я хотел бы иметь возможность сделать. Я ценю вашу помощь.