Как изменить стиль текста в цикл VBA Foreach - PullRequest
0 голосов
/ 08 января 2019

У меня есть этот код регулярного выражения, и он работает нормально, но я пытаюсь манипулировать текстом внутри foreach, но не оказывает никакого влияния на документ. Я хочу изменить стиль выделения и отключить разметку.

Sub Substituir()

Set documento = ActiveDocument.Range

Dim texto As String

Set oRegExp = New RegExp
oRegExp.Pattern = "<h1>[\s\S]*?</h1>"
oRegExp.Global = True
oRegExp.MultiLine = True

Dim resultado As MatchCollection

Set resultado = oRegExp.Execute(documento)

For Each r In resultado    
    r.Find.Execute FindText:="<h1>", ReplaceWith:="", Replace:=wdReplaceAll
    r.Find.Execute FindText:="</h1>", ReplaceWith:="", Replace:=wdReplaceAll
Next

End Sub

В результате я хочу заменить

<h1>bla bla</h1> 

с

bla bla

А затем измените стиль на заголовок 1 в слове.

1 Ответ

0 голосов
/ 08 января 2019

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

Option Explicit

Sub Substituir(Optional ByVal this_tag As String = "h1", Optional ByVal this_replacement_style As String = "Heading 1")

    With ActiveDocument.Content

        With .Find
            .ClearFormatting
            .Text = "(\<" & this_tag & "\>)(*)(\</" & this_tag & "\>)"   ' Default is "(<h1>)(*)(</h1>)"
            .Replacement.Text = "\2"
            .Format = True
            .Replacement.Style = this_replacement_style
            .Wrap = wdFindContinue
            .MatchWildcards = True
            .Execute Replace:=wdReplaceAll
        End With

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...