Циклический просмотр документа Word и замена строки на PageBreak - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь создать несколько макросов для Word, которые сделают мою жизнь намного проще, чем прежде.

Моя проблема заключается в следующем: я хочу создать Sub, который заменяет каждое вхождение строки "#PAGEBREAK#" фактическим pagebreak. Вот то, что я придумал:

Sub InsertPageBreak()

    Application.ScreenUpdating = False
    With ActiveDocument.Range
        With .Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = "#PAGEBREAK#"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .InsertBreak Type:=wdPageBreak
            .Execute
        End With
    End With
    Application.ScreenUpdating = True

End Sub

Что на самом деле происходит: строка "# PAGEBREAK #" заменяется на пустую строку. Пока все хорошо. Найдите, как задумано, НО я получаю сообщение об ошибке:

Method or Object not found

на

.InsertBreak Type:= wdPageBreak

Теперь моя проблема (как вы уже догадались), я никогда не имел никакого образования в VBA и понятия не имею, чёрт возьми, здесь будет работать. Какие методы могут быть использованы здесь каким образом? Так что, если есть кто-нибудь, кто мог бы помочь мне здесь.

Было бы очень признательно!

Заранее спасибо,

Грим

1 Ответ

1 голос
/ 18 июня 2019

Для вас это будет работать:

Sub InsertPageBreak()


    ActiveDocument.Range.Select

        With Selection.Find
                .Text = "#PAGEBREAK#"
                .Execute
        End With

        If Selection.Find.Found Then

            Selection.GoTo What:=wdGoToBookmark, Name:="\Page"
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.InsertBreak Type:=wdPageBreak

        End If
End Sub

Если вы хотите заменить все «# PAGEBREAK #», используйте следующий код:

Sub InsertPageBreak()


   ActiveDocument.Range.Select

    Do

    With Selection.Find
            .Text = "#PAGEBREAK#"
            .Execute
    End With

        If Selection.Find.Found Then

            Selection.GoTo What:=wdGoToBookmark, Name:="\Page"
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.InsertBreak Type:=wdPageBreak

        Else: Exit Sub

        End If
    Loop


End Sub
...