На сколько я смог в этом разобраться, выходит, что это возможно только если в момент открытия презентации PowerPoint уже открыт и в его VBA уже отработана процедура активации обработчика событий объекта Application.
Простым кликом на презентации при еще не запущенном PowerPoint выполнить макрос при открытии этой презентации не получится.
Активация обработчика событий Application происходит следующим образом:
1. Нужно создать модуль класса для обработчика событий, например EventClassModule
2. Включить в него объявление WithEvents
Public WithEvents App As Application
3. Написать модуль обработчика события в этом модуле класса, например:
Private Sub App_PresentationOpen(ByVal Pres As Presentation)
MsgBox Pres.Name & " открыта"
End Sub
3. Далее нужно запустить следующий код из любого модуля этой презентации - он инициализирует обработичик событий в созданном модуле класса обработчика событий:
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
(Именно в этом моменте вся загвоздка - инициализацию обработчика событий для объекта Application нужно вызывать "вручную".)
4. После этого при всяком наступлении события, описанного в модуле класса обработчика события, это событие будет инициировать соответствующу процедуру.
Вполне возможно, что запустить инициализацию обработчика событий объекта Application в PowerPoint можно извне, какой нибудь внешней программой, используя Automation. Но я в этом не разбирался и не смогу пока помочь.
Ответить
|