Excel не сохраняет макросы: как оставить VBA в книге

Содержание статьи
- Расширение книги отвечает за возможность сохранить VBA
- Предупреждение о несовместимом формате нельзя подтверждать автоматически
- Контрольная копия XLSM проверяется после повторного открытия
- Макрос текущей книги и Personal.xlsb — разные места хранения
- Центр управления безопасностью влияет на запуск, а не на формат
- Итог подтверждают отдельные проверки файла и запуска
Если макрос есть до сохранения, а после повторного открытия книги исчезает, сначала посмотрите на расширение файла. Обычная книга .xlsx не хранит VBA. Для книги, в которой код должен остаться, выберите формат .xlsm и сохраните отдельную контрольную копию.
Расширение книги отвечает за возможность сохранить VBA
| Формат | Что происходит с макросом |
|---|---|
.xlsx |
Книга не может хранить код VBA. При подтверждении сохранения без макросов код не попадёт в новый файл. |
.xlsm |
Книга предназначена для содержимого с макросами и сохраняет VBA вместе с листами и данными. |
Изменение букв в имени файла вручную не преобразует книгу. Формат выбирают в Excel через «Файл → Сохранить как» или «Сохранить копию», а затем указывают тип «Книга Excel с поддержкой макросов (*.xlsm)».
Предупреждение о несовместимом формате нельзя подтверждать автоматически
Когда книга содержит VBA, а выбран формат без поддержки макросов, Excel предупреждает, что часть функций не сохранится. Если код нужен, не подтверждайте вариант без макросов. Вернитесь в окно выбора типа и сохраните файл как XLSM.
- Откройте «Файл → Сохранить как» и выберите другую папку или новое имя.
- В списке типов укажите «Книга Excel с поддержкой макросов (*.xlsm)».
- Проверьте, что имя в строке заголовка относится к новой копии.
- Закройте книгу обычным способом, чтобы Excel завершил запись файла.
Если вы уже согласились сохранить XLSX без VBA и закрыли исходную книгу, новый XLSX не содержит код. Вернуть его можно только из исходного файла, резервной копии или истории версий, если такая копия существовала.
Контрольная копия XLSM проверяется после повторного открытия
Не считайте сохранение успешным только потому, что файл появился в папке. Закройте книгу, снова откройте именно созданный XLSM и выберите «Разработчик → Visual Basic». В Project Explorer найдите VBAProject с именем этой книги и проверьте те же модули, ThisWorkbook или объекты листов, где код находился до сохранения.
- Окно «Разработчик → Макросы» подходит как дополнительная проверка только для процедур, которые отображались там до сохранения.
- Пустой список «Макросы» сам по себе не доказывает потерю VBA: обработчик события может храниться в ThisWorkbook или модуле листа.
- Если нужного проекта или компонента нет, перепроверьте имя и расположение открытого файла. Можно случайно открыть старый XLSX вместо новой копии XLSM.
После проверки проекта выполните одно безопасное тестовое действие, для которого предназначен код. Не запускайте незнакомый VBA только ради проверки формата.
Макрос текущей книги и Personal.xlsb — разные места хранения
Код можно сохранить вместе с конкретной книгой или в скрытой книге Personal.xlsb. Второй вариант используют, когда макрос должен быть доступен при каждом запуске Excel, а не передаваться вместе с одним XLSM.
Поэтому перед выводом «Excel не сохранил макрос» уточните, где он создавался. Сохранение текущего XLSM не переносит в него код из Personal.xlsb автоматически. И наоборот, макрос внутри XLSM не становится общим для всех новых книг.
Microsoft Excel 2024
Если файл нужно передать другому человеку вместе с VBA, проверяйте именно код внутри VBAProject этой книги и отправляйте сохранённый XLSM, а не XLSX с похожим именем.
Центр управления безопасностью влияет на запуск, а не на формат
Параметры макросов определяют, разрешено ли выполнять код при открытии книги. Они не добавляют поддержку VBA в XLSX и не заменяют сохранение в XLSM. Сначала подтвердите, что код остался в файле, и только затем разбирайте предупреждение безопасности.
Не включайте все макросы глобально: Microsoft помечает этот режим как небезопасный. Для доверенного файла используйте уведомление Excel и решение, принятое после проверки источника. На рабочем компьютере настройки могут быть заданы администратором и недоступны для изменения.
Если нужный код виден в VBAProject, но не выполняется, сохранение уже отделено от безопасности. Запишите текст уведомления, источник файла и статус цифровой подписи, не меняя несколько параметров одновременно.
Частые вопросы
Можно ли просто переименовать книгу из .xlsx в .xlsm, чтобы макрос сохранился?
Нет, правка букв в имени файла не меняет внутренний формат книги. Тип выбирают в самом Excel через «Файл → Сохранить как» и пункт «Книга Excel с поддержкой макросов (*.xlsm)».
Я подтвердил сохранение в формате без макросов и закрыл книгу — код можно вернуть?
Из полученного XLSX — нет, кода там уже нет. Восстановить VBA получится только из исходного файла, резервной копии или истории версий, если такая копия существовала.
Окно «Разработчик → Макросы» пустое — значит VBA пропал при сохранении?
Не обязательно: в этом списке видны только процедуры, которые отображались там раньше. Обработчик события может храниться в ThisWorkbook или модуле листа, поэтому проверяют VBAProject книги в редакторе Visual Basic.
Макрос работал в любой книге, а в отправленном XLSM его нет — почему?
Скорее всего, он лежит в скрытой книге Personal.xlsb, а она не передаётся вместе с файлом. Сохранение текущей книги не переносит туда код автоматически: для передачи макрос должен находиться в VBAProject самого XLSM.
Код виден в VBAProject, но не выполняется — пересохранить книгу заново?
Нет, формат уже в порядке, вопрос перешёл к параметрам безопасности. Запишите текст уведомления, источник файла и статус подписи и меняйте настройки по одной, а на рабочем компьютере учтите, что их мог задать администратор.
Итог подтверждают отдельные проверки файла и запуска
- В имени открытой книги указано расширение
.xlsm, выбранное через диалог Excel. - После закрытия и повторного открытия нужные компоненты остаются в VBAProject именно этой книги.
- Для обычного макроса, который раньше был виден в окне «Макросы», отдельно сверяют имя в этом же окне.
- Запуск проверяют только для доверенного кода; запрет выполнения не принимают за исчезновение VBA из файла.
Если код пропал из VBAProject, возвращайтесь к формату и точному пути файла. Если компоненты сохранились, но код не выполняется, продолжайте диагностику параметров безопасности или политики организации, не пересохраняя книгу в XLSX.
Купить ключ Microsoft Office
Для Office важно выбрать лицензию под нужную версию и состав приложений, чтобы не получить ошибку несовместимой редакции.
Microsoft Excel 2024
Ключ и инструкция по активации приходят на email после оплаты.