Возможны две ситуации:
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) можно поместить файл в надёжное расположение.