Цикл поиска и замены для разрывов строк - PullRequest
1 голос
/ 08 июня 2019

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

Если глава первая найдена, после нее всегда должно быть 3 разрыва строки,Мне нужно проходить через это, пока это не так (поэтому, если после «Главы 1» есть 7 разрывов строк, нужно проходить до тех пор, пока не будет 3.

К сожалению, мне трудно вставить цикл для удаленияболее 3 последовательных разрывов строк

Sub ChapterLineBreaks()

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles( _
        "Heading 1,Chapter Heading")
    With Selection.Find
        .Text = "Chapter One^p^p^p^p"
        .Replacement.Text = "Chapter One^p^p^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Ожидается:

Глава первая

Текст должен начинаться здесь

1 Ответ

0 голосов
/ 08 июня 2019

Вам может понадобиться использовать такие символы подстановки:

Sub ChapterLineBreaks()

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles( _
        "Heading 1,Chapter Heading")
    With Selection.Find
        .text = "(Chapter One)([^13]@)([!^13])"
        .Replacement.text = "\1^p^p^p\3"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Вы найдете хорошую информацию здесь , здесь и здесь . Я использовал подстановочные знаки для определения регулярного выражения: «Глава первая {1 или более разрывов строк} Другой текст». Затем я заменил разрывы строк ровно на 3.

...