как заставить MS Word Macro добавить новую пустую страницу без колонтитулов с последней страницы - PullRequest
0 голосов
/ 26 сентября 2019

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

    Selection.EndKey Unit:=wdStory
    Selection.InsertBreak Type:=wdSectionBreakNextPage
    Selection.InsertNewPage

    Selection.Sections(1).Headers(wdHeaderFooterPrimary).LinkToPrevious = False
    Selection.Sections(1).Headers(wdHeaderFooterPrimary).Range.Delete
    Selection.Sections(1).Footers(wdHeaderFooterPrimary).LinkToPrevious = False
    Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range.Delete

Пока этот макрос дает мне дополнительную страницу с верхним / нижним колонтитулом, за которой следует пустая страница.Есть мысли / идеи?

1 Ответ

0 голосов
/ 26 сентября 2019

Код в вопросе находится на правильном пути с использованием объекта Section, LinkToPrevious и Range.Delete.Генерация дополнительной страницы:

Selection.InsertNewPage

Строка Selection.InsertBreak Type:=wdSectionBreakNextPage уже создает новую страницу.

FWIW, код, который я использовал бы, был бы в принципе таким же, но работал быс Range вместо Selection объекта.Работа с Range, как правило, выполняется быстрее и имеет минимальное мерцание экрана.Это также имеет тенденцию быть более точным, и легче определить, на что влияет код.Я предоставляю это в информационных целях: -)

Sub NewPageSectionNoHF()
    Dim doc As Word.Document
    Dim rng As Word.Range
    Dim sec As Word.Section
    Dim hf As Word.HeaderFooter

    Set doc = ActiveDocument
    Set rng = doc.content
    rng.Collapse wdCollapseEnd
    rng.InsertBreak Word.WdBreakType.wdSectionBreakNextPage
    Set sec = rng.Sections(1)
    Set hf = sec.Headers(wdHeaderFooterPrimary)
    hf.LinkToPrevious = False
    hf.Range.Delete
    Set hf = sec.Footers(wdHeaderFooterPrimary)
    hf.LinkToPrevious = False
    hf.Range.Delete
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...