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

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

  • Administrator
  • Сообщений: 1691
Возможны две ситуации:
1) нужно запускать макрос в каком-то одном эксель-файле;
2) нужно запускать макрос при открытии любого эксель-файла.

В этой теме рассматривается первый случай. Второй случай рассматривается здесь: https://forumvba.ru/index.php?topic=479.msg3007#msg3007

Для этого нужно поместить макрос внутрь эксель-файла.
  • Пересохраните эксель-файл, в который надо поместить макрос, в формат xlsb или xlsm. Если не знаете, какой формат лучше, выберите xlsb.
  • Перейдите в VBA и создайте в модуле "ЭтаКнига" событие "Workbook_Open" (посмотрите, как это сделано в приложенном файле).
  • Внутрь события "Workbook_Open" поместите ваш макрос (посмотрите, как это сделано в приложенном файле)
  • Щёлкните в VBA "Сохранить".
  • Готово.
Теперь при открытии файла возможны две ситуации:
1) при открытии файла будет появляться вверху жёлтая панель "ПРЕДУПРЕЖДЕНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ". В этом случае макрос не будет запущен, пока вы не щёлкните "Включить содержимое";
2) в новых версиях экселя, после открытия файла и включения макроса, при следующих открытиях этого файла может не быть вверху жёлтой панели. В этом случае макрос сразу запустится.

Также нужно учитывать настройки безопасности. Если у вас макрос не запускается, не смотря на то, что нет жёлтой панели, возможно установлены здесь настройки безопасности (описано для Excel 2016): Файл - Параметры - Центр управления безопасностью - Параметры центра управления безопасностью... - Параметры макросов.
Чтобы макросы запускались нужно установить любой кружок, кроме первого "Отключить все макросы без уведомления".

Кроме того, чтобы не было жёлтой панели, можно сделать ещё это:
1) можно сделать цифровую подпись. В этом случае у других файлов будет жёлтая панель, а у этого конкретного не будет;
2) можно поместить файл в надёжное расположение.