Страницы: 1
RSS
Запуск макроса при открытии любой книги
 
Задача проста:
При открытии ЛЮБОЙ книги нужно вывести в сообщении путь до этой книги. (желательно используя надстройку)

В поиске есть похожие темы, но у меня они просто не работают...
Изменено: Кирилл Беляев - 23.06.2021 06:30:54
 
Кирилл Беляев,
Строка кода для события открытия книги НАДСТРОЙКИ
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
А как отследить открытие книги можно почитать тут
Как отследить событие(например выделение ячеек) в любой книге? (excel-vba.ru)
 
МатросНаЗебре, если код в надстройке (в модуле книги на событии открытия), то нет необходимости в таком сложном пути, т.к. надстройка и так запускается вместе с любым файлом
А для справки — отлично  :idea:
Изменено: Jack Famous - 23.06.2021 10:10:43
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
А для справки — отлично  
Это я вчера тут же на форуме и почерпнул )
 
Цитата
Jack Famous написал:
если код в надстройке (в модуле книги на событии открытия), то нет необходимости в таком сложном пути
а вот и неверно. Если мы уже запустили Excel, то надстройка уже прогрузилась и открыта. И тогда открытие других книг уже не будет инициировать событие открытия надстройки, ведь она уже открыта. И останется только длинный и тернистый путь через статью выше :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, привет, Дим)) убедил  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, работает только при первом запуске инстанса екселя, а если дальше открывать книги не закрывая полностью ексель - работать перестает (надстройка уже ведь загружена).

Код для отслеживания открытия книги написал таким образом:
Код
Private WithEvents xlsApp As Application
Private Sub Workbook_Open()
    Set xlsApp = ThisWorkbook.Application
End Sub
     
Private Sub xlsApp_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox ActiveWorkbook.FullName
End Sub
Код прописан в надстройке, в ЭтаКнига
Но работает как-то не понятно, сперва отработало корректно, на радостях отписался, что все работает, а потом начало выдавать ошибку хоть ничего и не менял в коде..
Вылечил ошибку только подстановкой On Error Resume Next в начало кода
Изменено: vikttur - 23.06.2021 16:05:56
 
Потому что статью не дочитали, написали код в итоге неверно. Правильно обращаться не к ActiveWorkbook, а к специально заведенной переменной wb:
Код
Private Sub xlsApp_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox Wb.FullName
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, супер, спасибо!
Страницы: 1
Наверх