Скрыть/показать определенную страницу в VBA Word

#vba #ms-word

Вопрос:

Здравствуйте, у меня есть документ Word на 2 страницах с фигурами и текстовыми полями на каждой странице. Я хотел бы иметь возможность скрыть 2-ю страницу или показать ее.

Я знаю, что мы могли бы скрыть лист в excel, как показано ниже, но я не узнал, как это сделать в word :

 Worksheets("Sheet1").visible = False
 

Поэтому я попробовал использовать этот макрос :

 Sub HidePage2()
ActiveWindow.DocumentMap = True
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.TypeBackspace
CommandBars("Navigation").Visible = False 
End Sub
 

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

 CommandBars("Navigation").Visible = True
 

Я не знаю, как решить свою проблему, не могли бы вы мне помочь?

Комментарии:

1. Скрыть страницу в Word совсем не сложно. Однако реальная проблема заключается в том, что Word использует активный драйвер принтера для оптимизации макета страницы. Это может привести к тому, что все, что вы скрыли, не попадет на одну и ту же страницу при использовании другого принтера.

2. Но меня беспокоит не то, чтобы напечатать его … Итак, знаете ли вы, как скрыть и показать страницу с макросом в VBA, если это не сложно?

Ответ №1:

Абзацы и разделы являются объектами Word VBA, страницы-нет. Вы можете применить закладку к каждой группе абзацев, которые хотите скрыть, плюс разрыв страницы в нижней части страницы, если он есть. Затем используйте такой код, чтобы показать или скрыть его:

 Sub HidePage2()
    ActiveDocument.Bookmarks("Page2Bookmark").Range.Font.Hidden = True
End Sub

Sub ShowPage2()
    ActiveDocument.Bookmarks("Page2Bookmark").Range.Font.Hidden = False
End Sub
 

Комментарий Macropod о драйвере принтера уместен, поскольку разбиение документа на страницы может измениться, если у вас другой активный принтер. Тогда то, что, как вы думали, было на странице 2, частично может быть на странице 1 или 3. Вы можете свести к минимуму эту проблему, добавив разрывы страниц до и после страницы 2 и убедившись, что страница 2 не заполнена полностью.

Комментарии:

1. Ваши 2 макрокоманды «HidePage2» и «ShowPage2» отлично работают, чтобы скрыть фигуры и текстовые поля страницы № 2, но, к сожалению, 2-я страница остается пустой. Даже если я удалю его и добавлю новую пустую страницу, я не смогу вернуть свои текстовые поля и формы 2-й страницы с помощью вашего макроса «ShowPage2», потому что закладка была удалена.

2. Это просто говорит нам о том, что вы разместили недостаточно контента в закладках (например, если у вас есть разрыв страницы вручную перед второй страницей, это также должно быть включено).

3. Это может помочь сделать разрывы страниц видимыми, выбрав Файл>Параметры>>Отображение и проверка >> Показать все метки форматирования .

Ответ №2:

Например, без необходимости заранее добавлять страницу в закладки:

 Sub Demo()
ActiveDocument.Range.GoTo(What:=wdGoToPage, Name:="2").GoTo(What:=wdGoToBookmark, Name:="page").Font.Hidden = True
End Sub