Если после записи макроса в Microsoft Excel вы пытаетесь сохранить файл, но в выпадающем списке форматов отсутствует опция для поддержки VBA, проблема кроется в выборе неверного типа файла. Стандартный формат .xlsx не сохраняет макросы — они будут безвозвратно утеряны при следующем открытии. Чтобы избежать потери кода, необходимо вручную указать один из двух специализированных форматов: .xlsm (с поддержкой макросов) или .xlsb (двоичный формат для крупных файлов). Далее разберём, как это сделать корректно в разных версиях Excel, почему иногда опция сохранения недоступна, и что делать, если файл всё равно не сохраняет макросы.
Ошибка часто проявляется после обновления Office 365 или при работе с файлами, изначально созданными в формате .xlsx. Например, если вы записали макрос через Вид → Макросы → Записать макрос, но при сохранении выбрали стандартный формат, Excel выдаст предупреждение: "Файл содержит макросы, которые будут удалены. Сохранить как файл без макросов?". Игнорирование этого сообщения приведёт к потере всего VBA-кода. Ниже — пошаговые решения для Excel 2010–2019 и Microsoft 365, а также способы восстановления макросов, если они уже были утеряны.
Почему Excel не сохраняет макросы: основные причины
Проблема с сохранением макросов возникает из-за архитектурных ограничений форматов файлов Excel. Вот ключевые причины:
- 📁 Неправильный формат файла: Формат
.xlsx(Excel Workbook) не поддерживает VBA-скрипты. Это основная причина потери макросов. - 🔒 Политика безопасности: В корпоративных сетях администраторы могут блокировать сохранение файлов с макросами через групповую политику Office.
- 🛠️ Повреждение файла: Если файл изначально был повреждён (например, после аварийного закрытия), Excel может автоматически сохранять его в формате
.xlsx, игнорируя макросы. - 📥 Импорт из внешних источников: Файлы, импортированные из Google Sheets или CSV, по умолчанию сохраняются без поддержки макросов.
Чаще всего пользователи сталкиваются с проблемой после обновления Office, когда настройки сохранения сбрасываются к заводским. Например, в Excel 2016 по умолчанию предлагается формат .xlsx, даже если в файле есть макросы. Чтобы избежать этого, проверьте настройки по умолчанию в Файл → Параметры → Сохранение.
⚠️ Внимание: Если вы работаете с файлом, полученным от коллеги, и он не сохраняет макросы, сначала проверьте его расширение. Возможно, файл уже был сохранён в формате .xlsx, и макросы в нём отсутствуют.
Пошаговая инструкция: как сохранить файл с макросами в Excel
Процесс сохранения зависит от версии Excel, но общая логика одинакова. Следуйте этим шагам:
- Откройте меню сохранения: Нажмите
Файл → Сохранить как(илиF12). - Выберите папку: Укажите место сохранения файла.
- Укажите формат: В выпадающем списке
Тип файлавыберите:Книга Excel с поддержкой макросов (*.xlsm)— стандартный вариант.Двоичная книга Excel (*.xlsb)— для крупных файлов (более 10 000 строк).
Сохранить. Если появится предупреждение о совместимости, подтвердите действие.В Excel 2019 и Microsoft 365 список форматов может быть скрыт за кнопкой Другие форматы. Если опция .xlsm отсутствует, проверьте, включена ли поддержка макросов в настройках безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов).
Выбран формат .xlsm или .xlsb|Файл не повреждён (проверено через "Открыть и восстановить")|В настройках безопасности разрешено выполнение макросов|Имя файла не содержит запрещённых символов (/, \, *, ?)
-->
Разница между форматами XLSM и XLSB: какой выбрать?
Оба формата поддерживают макросы, но у них есть ключевые различия:
| Параметр | .xlsm | .xlsb |
|---|---|---|
| Поддержка макросов | Да | Да |
| Размер файла | Средний (XML-основа) | Меньше на 30–50% (двоичный формат) |
| Скорость открытия | Медленнее для крупных файлов | Быстрее (оптимизирован для больших данных) |
| Совместимость | Excel 2007 и новее | Excel 2007 и новее |
| Ограничения | Максимум 1 048 576 строк | Нет ограничений по строкам (теоретически) |
Выбирайте .xlsb, если работаете с файлами объёмом более 50 МБ или более 50 000 строк. Для остальных случаев подойдёт .xlsm. Обратите внимание: файлы .xlsb нельзя открыть в Excel для Mac 2011 и более ранних версиях.
.xlsm|.xlsb|Не знаю разницы|Использую оба в зависимости от задачи
-->
Что делать, если опция сохранения в XLSM отсутствует?
Если в списке форматов нет .xlsm или .xlsb, причины могут быть следующими:
- 🔧 Отсутствует поддержка VBA: В некоторых сборках Office (например, Excel Starter или Office Online) макросы не поддерживаются.
- 📋 Файл открыт в режиме совместимости: Если файл изначально был создан в формате
.xls(Excel 97–2003), сохраните его сначала в.xlsx, а затем конвертируйте в.xlsm. - 🛡️ Блокировка групповой политикой: В корпоративных сетях администраторы могут отключать сохранение макросов. Проверьте через
gpedit.msc(для Windows Pro). - 🖥️ Повреждение установки Office: Переустановите Excel через
Панель управления → Программы → Программы и компоненты.
Если проблема связана с групповой политикой, попробуйте сохранить файл на другой компьютер или в облако (например, OneDrive). Альтернативный способ — экспортировать макросы в отдельный файл .bas через редактор VBA (Alt + F11 → Проект → Экспорт файла), а затем импортировать их в новый файл .xlsm.
⚠️ Внимание: Если вы работаете в Excel Online, макросы не поддерживаются в принципе. Используйте десктопную версию Excel или Microsoft 365.
Как восстановить макросы, если файл был сохранён в XLSX?
Если вы случайно сохранили файл с макросами в формате .xlsx, шансы на восстановление зависят от того, закрывали ли вы файл после сохранения:
- 🔄 Файл ещё открыт: Закройте его без сохранения и откройте исходную версию (если она сохранилась в временных файлах). Путь к временным файлам:
C:\Users\<имя_пользователя>\AppData\Local\Microsoft\Office\UnsavedFiles. - 💾 Файл закрыт, но есть резервная копия: Проверьте папку с автосохранениями (
Файл → Сведения → Управление версиями). - 🔍 Макросы утеряны: Если резервных копий нет, попробуйте восстановить код из журнала изменений VBA (если был включён). Для этого откройте новый файл
.xlsm, нажмитеAlt + F11, затемView → Immediate Windowи введите команду?ThisWorkbook.VBProject— иногда там остаются следы кода.
Если макросы были записаны недавно, проверьте Журнал макросов в Вид → Макросы → Просмотреть макросы. Там могут сохраниться последние выполненные действия. Для сложных макросов восстановление невозможно — придётся переписывать код заново.
Где Excel хранит временные файлы с макросами?
Временные файлы Excel (включая те, что могут содержать следы макросов) хранятся по пути:
C:\Users\<Имя_пользователя>\AppData\Local\Microsoft\Office\UnsavedFiles
или
C:\Users\<Имя_пользователя>\AppData\Roaming\Microsoft\Excel\
Обратите внимание: папка AppData скрыта по умолчанию. Чтобы её увидеть, включите отображение скрытых файлов в проводнике Windows (Вид → Скрытые элементы).
Как избежать потери макросов в будущем?
Чтобы не терять макросы при сохранении, следуйте этим правилам:
- Настройте формат по умолчанию: В
Файл → Параметры → СохранениеустановитеСохранять файлы в этом формате: Книга Excel с поддержкой макросов (*.xlsm). - Используйте автосохранение: Включите функцию в
Файл → Параметры → Сохранение → Автосохранение каждые N минут. - Экспортируйте макросы отдельно: Периодически сохраняйте код VBA в текстовые файлы
.basчерез редактор (Alt + F11 → Проект → Экспорт). - Проверяйте расширение файла: Перед закрытием Excel убедитесь, что в строке заголовка окна отображается
.xlsm, а не.xlsx.
Для командной работы используйте SharePoint или OneDrive с включённой версионностью. Это позволит откатиться к предыдущей версии файла, если макросы были утеряны при сохранении. Также полезно добавлять в имя файла префикс _MACRO_, чтобы случайно не пересохранить его в неверном формате.
-->
Частые ошибки и их решения
Даже после правильного сохранения в формате .xlsm могут возникать проблемы. Вот типичные ошибки и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
Не удаётся открыть файл из-за его содержимого |
Повреждение VBA-проекта | Откройте файл с отключёнными макросами (Файл → Открыть → Открыть и восстановить) |
Макросы отключены (жёлтая полоса вверху) |
Настройки безопасности | Нажмите Включить содержимое или настройте доверительный центр (Файл → Параметры → Центр управления безопасностью) |
Компиляционная ошибка в скрытом модуле |
Синтаксическая ошибка в коде VBA | Откройте редактор VBA (Alt + F11), найдите модуль с ошибкой и исправьте код |
Файл не открывается в Excel Online |
.xlsm не поддерживается в веб-версии |
Используйте десктопную версию Excel или конвертируйте файл в .xlsx (макросы будут утеряны) |
Если при открытии файла .xlsm появляется сообщение "Файл содержит недопустимые данные", попробуйте открыть его в Excel 2010 или более ранней версии — иногда это помогает восстановить доступ к макросам. Также проверьте, не заблокирован ли файл антивирусом (например, Kaspersky или ESET могут блокировать VBA-скрипты).
FAQ: Ответы на частые вопросы
Можно ли конвертировать XLSX в XLSM без потери макросов?
Нет. Формат .xlsx не сохраняет макросы, поэтому конвертация в .xlsm не восстановит утерянный код. Единственный способ — восстановить файл из резервной копии или переписать макросы заново.
Почему при открытии XLSM Excel показывает предупреждение о макросах?
Это стандартная мера безопасности. Excel блокирует выполнение макросов из ненадёжных источников. Чтобы убрать предупреждение, добавьте папку с файлом в список доверенных расположений (Файл → Параметры → Центр управления безопасностью → Доверенные расположения).
Можно ли открыть XLSM на Mac?
Да, но с ограничениями. Excel для Mac поддерживает .xlsm, но некоторые функции VBA могут работать некорректно. Для полной совместимости используйте Parallels Desktop или Boot Camp с Windows-версией Excel.
Как защитить макросы от изменения другими пользователями?
Заблокируйте VBA-проект паролем:
- Откройте редактор VBA (
Alt + F11). - Щёлкните правой кнопкой по проекту в окне
Project Explorer. - Выберите
Свойства → Защита. - Установите пароль и сохраните файл.
Чем отличается XLSM от XLSB для макросов?
Функционально — ничем: оба формата поддерживают VBA. Разница в структуре хранения данных:
.xlsm— XML-формат, совместим с большинством инструментов, но может быть медленнее для больших файлов..xlsb— двоичный формат, быстрее открывается и занимает меньше места, но менее совместим (например, не поддерживается в Excel для Mac 2011).