PowerPoint 2007 - Как использовать обработчик событий Application.NewPresentation? - PullRequest
1 голос
/ 16 сентября 2010

поэтому я обнаружил, что 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 ]

2 голосов
/ 18 сентября 2010

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

2 голосов
/ 16 сентября 2010

Способ только для создания автоматического макроса в PowerPoint VBA состоит в том, чтобы ваш файл был надстройкой (.ppa или .ppam - не .pptx / .pptm / .potm / и т. Д.).И способ его создания:

  1. Создать модуль класса.Вверху (после любого Option XXX) поставьте Public WithEvents App As Application, а затем поставьте свою подпрограмму выше этого.
  2. Создайте модуль с любым именем и поместите:

    Dim X As New Class1
    Sub AutoOpen()
        Set X.App = Application
        ''# Code to create new presentation
    End Sub
    

Опять же, это не сработает из вашего требования .potm.Другой способ, который вы можете рассмотреть, устарел, но он по-прежнему работает, а именно создание файла мастера.

...