#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