Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > VBA отловить открытие документа в ворде


Автор: Bladerender 27.5.2014, 19:00
Короче задача такая. С VBA первый раз сталкиваюсь. Сам на C# пишу. 

К Normal подключен набор функций и прочей фигни. Как оно в VBA у вас называется - не знаю.
Библиотека короче кастомная. 

В этой библиотеке у нас есть класс с ивентами MyClassFromLibrary.

Задача такова:
При открытии любого документа или создании нового документа - 
создать обьект этого MyClassFromLibrary и подписатся обработчиками на ивенты этого MyClassFromLibrary .

Что я пытаюсь сделать. 
В этом Alt+F11 в Normal создал ClassModule под названием MyCustomClass.

В нем написал 
Public WithEvents MyObj As MyClassFromLibrary

Потом Alt+F11 в Normal создал Module1.
В этом Module1 теперь нужно как-то подписаться на событие открытия/создания документа в Word и в обработчике создать обьект этого MyObj и подписаться на ивенты этого MyObj

Этот код это типа уже в обработчике открытия/создания документа
{
Dim myCustomClass As MyCustomClass
Set myCustomClass = New MyCustomClass
Set myCustomClass.MyObj = new MyClassFromLibrary
}

потом как-то нужно подписаться на ивенты этого myCustomClass.MyObj. 

я так понял что подписчики определяются VBA по названию обработчика типа 
Т.е. если у меня обьект с ивентами где-то в myCustomClass.MyObj и название ивента у меня MyEvent1,

то обработчик будет выглядеть так 


Private Sub myCustomClass_MyObj_MyEvent1(параметры)
MsgBox "Сработал обработчик моего класса"
End Sub

Хз. Вроде елементарщина с точки зрения того, что VBA должен делать это все командой "сделать все зашибись", т.к. типа заточен под такие дела. Но я что-то с помощью гугла собрать рабочий семпл этого дела так и не смог.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)