События уровня книги не запускаются в моем .xlam - PullRequest
0 голосов
/ 31 января 2020

У меня есть простой .xlsm следующим образом:

Private Sub Workbook_Open()
  Application.EnableEvents = True
  MsgBox "Workbook open"
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  MsgBox "Sheet Change"
End Sub

Это работает как файл .xlsm. Однако, когда я преобразовываю это в .xlsm и регистрирую с помощью надстроек, эти события больше не запускаются. Кто-нибудь знает, почему это может быть?

1 Ответ

0 голосов
/ 31 января 2020

Спасибо за ответы. Да, для этого требуется обработчик событий уровня приложения. Я публикую рабочий код ниже. Также обратите внимание, что при первом создании .xlam возникла проблема с доверием макросов. Остерегайтесь этого. Центр доверия => Надстройки отмечены флажком «Требовать, чтобы надстройки приложений были подписаны доверенным издателем». Отключение этого (для развития) заставляет вещи катиться. Обычно это проверяется, и вы подписываете .xlam цифровым сертификатом и доверяете этому издателю.

Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
    App.EnableEvents = True
    MsgBox "std workbook open"
End Sub

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
    MsgBox "app new workbook"
End Sub

Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    MsgBox "app Sheet change"
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox "app workbook Open"
End Sub
...