PowerPoint 2007 - Как использовать обработчик событий Application.NewPresentation?
Поэтому я обнаружил, что PowerPoint 2007 действительно поддерживает обработчики событий на уровне приложений. Например Application.NewPresentation
или даже Application.AfterNewPresentation
Это описано здесь http://msdn.microsoft.com/en-us/library/ff745073.aspx
Но реальный вопрос в том, как мне их использовать? Где я могу их использовать? Чтобы рассказать вам о моем сценарии, я хочу вставить динамический текст в несколько текстовых полей. У меня есть код макроса, чтобы сделать это, и он работает именно так, как я хочу. Но мне нужно, чтобы макрос запускался после создания новой презентации из шаблона potm. И только на этом событии. Так же, как в Word 2007.
С чего мне начать? Я попытался создать подпрограмму, похожую на эту, и сохранить ее в виде файла potm, и открыть новую презентацию на основе этого шаблона. И ничего не случилось.
Private Sub App_NewPresentation(ByVal Pres As Presentation)
MsgBox "Running!"
End Sub
Редактировать: можно открыть любой файл Office 2007 с помощью редактора XML. Я использую редактор пользовательского интерфейса для Microsoft Office и добавляю часть пользовательского интерфейса Office 2007 Custom UI.XML, следуя представленному здесь руководству: http://www.pptalchemy.co.uk/PowerPoint_Auto_Open_Code.html
Но я сталкиваюсь с проблемами, когда PowerPoint создает новую презентацию на основе этого шаблона. Открытие шаблона само по себе работает просто отлично. Там есть обработчик событий, и код работает прекрасно. Но новая презентация на его основе? Нет, обработчик тоже есть. Но он говорит, что не может найти макрос. Хотя макрос также находится в новой презентации, так как я могу открыть редактор Visual Basic и найти макрос, а затем запустить его. Это просто автозапчасть, которая, кажется, не работает так, как должна.
2 ответа
Единственный способ создать автоматический макрос в PowerPoint VBA - это использовать файл в качестве надстройки (.ppa или.ppam, а не.pptx/.pptm/.potm/ и т. Д.). И способ создать это:
- Создайте модуль класса. Вверху (после любого
Option XXX
), положилPublic WithEvents App As Application
и затем поместите свою рутину выше этого. Создайте модуль с любым именем и поместите:
Dim X As New Class1 Sub AutoOpen() Set X.App = Application ''# Code to create new presentation End Sub
Опять же, это не будет работать из вашего требования.potm. Другой способ, который вы можете рассмотреть, устарел, но он по-прежнему работает, а именно создание файла мастера.
Макрос в созданной презентации не может быть запущен, так как макрос auto_open работает только с надстройками. В зависимости от того, как вы это делаете, вам придется перезагрузить ленту, чтобы запустить событие в новой презентации, которую вы хотите запустить.