На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! `
Не забудьте заглянуть в VB6 FAQ, так как большая часть VB-примеров актуальна и для VBA-раздела ;)
Модераторы: Old Bat, MIF
  
    > Обработка событий приложений
      Word:
      Создаем класс, например MyClass. В нем пишем:
      ExpandedWrap disabled
        Public WithEvents app As Application

      Выбираем в комбобоксе выбора объектов "app" и в комбобоксе выбора процедур нужную процедуру обработки события
      ExpandedWrap disabled
        Private Sub app_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
          MsgBox "BeforeSave"
        End Sub

      Создаем модуль. В нем:
      ExpandedWrap disabled
        Public n As New MyClass
         
        Public Sub aStart()
          Set n.app = Application
        End Sub

      Для того чтобы событие начало срабатывать, нужно запускать процедуру aStart. Можно это делать при открытии документа. Т.е. в модуле документа пишем:
      ExpandedWrap disabled
        Private Sub Document_Open()
          aStart
        End Sub

      Также все это можно делать на уровне NORMAL.DOT. Только для этого нужно будет запускать aStart через AutoExec, например. Пишем в модуле ThisDocument в Normal:
      ExpandedWrap disabled
        Public Sub AutoExec()
          aStart
        End Sub
        Excel:
        Делаем все то же самое, что и для Word'а. Единственное отличие - aStart запускаем через Workbook_Open, естественно
        Для того чтобы работать с событиями в любой открываемой книге, можно использовать личную книгу макросов (PERSONAL.XLS). Один из способов добраться до этой книги - начинаем производить запись макроса и в диалоговом окне "Запись макроса" в поле "Сохранить в:" выбираем "Личная книга макросов", нажимаем "ОК"; останавливаем запись. В редакторе VBE в появившемся проекте PERSONAL.XLS оформляем модули с кодами
        :)
          PowerPoint:
          Таким же образом, как и для Word'а, создаем модуль класса с объектной переменной.
          Но для того, чтобы автоматически присвоить свойству app объект Application при открытии приложения, необходимо запускать процедуру Auto_Open при помощи установленной надстройки (Add-In). Готовый Add-In с примером использования можно взять в аттаче, или на сайте автора.
          Создаем модуль и в нем пишем:
          ExpandedWrap disabled
            Public n As New MyClass
             
            Sub Auto_Open()
              Set n.app = Application
            End Sub

          После того, как установим надстройку - можем пользоваться

          Кроме использования событий "по-умолчанию" Auto_Open и Auto_Close, данный Add-In позволяет без создания объектной переменной приложения использовать такие события, как: Auto_Print, Auto_ShowBegin, Auto_ShowEnd, Auto_NextSlide
          :)
          Прикреплённый файлПрикреплённый файлautoevents.zip (38.79 Кбайт, скачиваний: 258)
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0209 ]   [ 16 queries used ]   [ Generated: 20.04.24, 02:02 GMT ]