Автор Тема: Excel VBA: Выполнение макроса при открытии какого-либо эксель-файла.  (Прочитано 729 раз)

Онлайн Администратор

  • Administrator
  • Сообщений: 1603
Все действия, описанные ниже, нужно сделать или в личной книге макросов, или в эксель-надстройке или в обычном эксель-файле (с поддержкой макросов: xlsm, xlsb, xls).

Шаг 1. Создание класса.
Создайте в эксель-файле класс и пусть у него будет имя "Class1". Если не знаете, как создать класс, то посмотрите в интернете.

Шаг 2. Внутри класса создайте переменную "app":
Public WithEvents app As Excel.Application

Шаг 3. Внутри класса создайте процедуру, которая будет запускаться при открытии любого эксель-файла:

Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
    ' Wb - это открываемый эксель-файл. Поставьте точку после Wb и появятся члены эксель-файла.
End Sub

Шаг 4. Создайте модульную переменную в модуле книги.
Нужно создать переменную в самом верху (над всеми процедурами, то есть в области объявлений модуля):
Dim myClass As Class1

Шаг 5. Создание объекта на основе класса "Class1" и привязка переменной "App" к объекту "Excel.Application".
В модуле книги создайте такую процедуру:
Private Sub Workbook_Open()
    Set myClass = New Class1
    Set myClass.app = Excel.Application
End Sub

Сохранитесь и всё готово. Теперь закройте программу "Excel" (или файл, если у вас будет использоваться обычный файл) и снова откройте (чтобы сработала процедура "Workbook_Open"). Процедура "Workbook_Open" активизирует всю эту сделанную систему.

Для примера я сделал всю эту систему в обычном файле. Вы можете перенести эту всю систему в личную книгу макросов, в эксель-надстройку или в обычный эксель-файл (xlsm, xlsb, xls).
В файле-примере, при открытии какого-либо эксель-файла будет появляться сообщение с именем открываемого файла.
При открытии файла-примера не забудьте разрешить макросы.