Включить все истории в поиск регулярных выражений VBA в MS Word

#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 с подстановочными знаками, но если вам нужно использовать регулярное выражение, с этого можно начать.

2. wordmvp.com/FAQs/Customization/ReplaceAnywhere.htm

Ответ №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. Спасибо! Это именно то, что я хотел бы иметь возможность сделать. Я ценю вашу помощь.