В Microsoft Publisher VBA, как получить доступ к выбранной странице?

В Publisher, а не в VBA, я использую панель навигации для выбора страницы 5. Теперь работа, которую я выполняю вручную, будет применяться к странице 5. Однако теперь я хочу запустить написанный мной макрос, который будет импортировать, изменять размер, маркировать и т. д. пачка изображений. Как мне заставить мой макрос распознать, что я хочу, чтобы эти изображения были импортированы на страницу 5 (моя текущая рабочая страница)?

Я написал свой макрос жестко привязанным к странице 2 (потому что не мог ответить на вопрос выше): set pg = activedocument.pages(2)

Я представлял что-то вроде (но это, конечно, не работает): set pg = activedocument.selected.page

Точно так же после запуска моего макроса, который добавляет три новые страницы, я хочу, чтобы выбранная/активная страница была последней страницей, которую я добавил (например, страница 9). Как это сделать? Опять же, я представил что-то вроде: activedocument.pages(9).select

Большое спасибо.


person Matthew Miner    schedule 07.11.2014    source источник


Ответы (2)


Свойство, которое вы нашли (помогая мне, так что спасибо!) предназначено как для получения, так и для установки, но хитрость в том, что вы должны установить его для страницы, а не пытаться установить его для PageIndex ("ActivePage = 2" )

ActiveDocument.ActiveView.ActivePage = yourPage;

Например, вы можете перейти на следующую страницу с помощью:

pubApp.ActiveDocument.ActiveView.ActivePage = pubApp.ActiveDocument.Pages[pubApp.ActiveDocument.ActiveView.ActivePage.PageIndex+1];

... Только что понял, что вы спрашиваете о VBA, а не о C#, поэтому вот несколько примеров VBA специально для вас:

GoToNextPage()
    ActiveDocument.ActiveView.ActivePage = ActiveDocument.Pages(ActiveDocument.ActiveView.ActivePage.PageIndex + 1)
End Sub

GoToPageTwo()
    ActiveDocument.ActiveView.ActivePage = ActiveDocument.Pages(2)
End Sub
person Jbjstam    schedule 22.09.2015

Ответ на вопрос 1:

Установите p = ActiveDocument.ActiveView.ActivePage

Остается вопрос 2: как использовать vba, чтобы активировать новую конкретную страницу? (т. е. я мог бы использовать VBA, чтобы приведенное выше вернуло мне другую страницу для «p»?) Для формы я могу сказать: «my_shape.select»; как мне сделать это для страницы?

person Matthew Miner    schedule 08.11.2014