У меня есть надстройка excel, и я хочу, чтобы она запускала определенные макросы при каждом открытии шаблона. Это нормально работает, если я открываю excel, а затем запускаю auto_open sub вручную, но при запуске excel выдает «Ошибка времени выполнения 9. Подстрочный код вне диапазона».Надстройка VBA не может ссылаться на рабочий лист при автооткрытии
Похоже, что добавление загружается и пытается запустить до того, как шаблон загрузился, чтобы при попытке ссылаться на конкретный лист в рабочей книге он ничего не нашел.
В частности, ошибка возникает при
Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test")
Как я могу заставить Auto_Open макрос один раз запустить загружены листы?
Мой автомобиль открытый код:
Sub Auto_Open()
Set clsAppEvents = New clsApplicationEvents
Application.Run "PerformanceOpen"
End Sub
А макрос Я пытаюсь запустить содержит:
Private Sub PerformanceOpen()
Dim shtData As Worksheet
Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test")
shtData.Activate
Благодарим - могу ли я сделать это открытым событием конкретной книги, сохранив код в надстройке, а не сама книга? Если да, то как мне это поделать? – db579
Да, как я уже упоминал, вы можете написать код, который будет запускаться при открытии * любой * рабочей книги, а затем проверить имя книги. Однако я бы поставил под сомнение ваш подход. Надстройка предназначена для добавления дополнительных функций в Excel. Если он ожидает, что откроется другая специальная книга, IMO - это уже не надстройка. Удачи;) –
Да, я бы предпочел просто сохранить его как простой макрос рабочей книги, но из-за причин из-под его контроля он будет работать только в надстройке ... Спасибо за помощь! – db579