Формат файлов XLSM¶
XLSM — расширение файлов электронных таблиц Microsoft Excel, сохранённых в формате Office Open XML с поддержкой макросов на языке Visual Basic for Applications (VBA). Файлы с расширением .xlsm являются разновидностью формата .xlsx и отличаются от него возможностью хранить и исполнять макрокод. Формат утверждён корпорацией Microsoft как часть стандарта Office Open XML (ISO/IEC 29500) и официально поддерживается начиная с версии Microsoft Office 2007.
¶Отличие от XLSX
Основное и принципиальное отличие XLSM от XLSX заключается в флаге содержимого (content type) внутри ZIP-архива, из которого состоит файл. Оба формата используют одинаковую структуру упаковки, но в XLSM дополнительно разрешено хранение VBA-проекта — модулей, форм, пользовательских функций и обработчиков событий. В Excel при сохранении книги пользователь может выбрать между «Книгой Excel» (.xlsx) и «Книгой Excel с поддержкой макросов» (.xlsm). Если книга содержит макросы, но сохранена в формате XLSX, макрокод будет безвозвратно удалён.
¶Внутренняя структура файла
Файл .xlsm, как и .xlsx, является ZIP-архивом, содержащим набор XML-документов и ресурсов. Типичная структура включает:
[Content_Types].xml— описывает типы всех содержимыхых элементов архива; именно здесь указан типapplication/vnd.ms-excel.sheet.macroEnabled.main+xml, отличающий XLSM от XLSX;xl/workbook.xml— описание структуры книги (листы, именованные диапазоны);xl/worksheets/— XML-представление отдельных листов;xl/sharedStrings.xml— общий словарь текстовых значений;xl/styles.xml— описание форматирования;xl/vbaProject.bin— бинарный файл VBA-проекта, содержащий скомпилированный макрокод (присутствует только в XLSM и старых бинарных форматах .xls с макросами).
Наличие vbaProject.bin — ключевой признак макросодержащей книги. Этот файл хранится в закодированном виде, его структура документирована в спецификации MS-OVBA.
¶История и контекст появления
До выхода Microsoft Office 2007 электронные таблицы Excel сохранялись в бинарном формате .xls (BIFF — Binary Interchange File Format). С выходом Office 2007 компания перешла на открытый формат Office Open XML, в котором данные упакованы в ZIP-архив и описаны XML-документами. Новый формат получил расширение .xlsx, а его макросодержащая разновидность — .xlsm. Отдельное расширение было введено для того, чтобы операционная система и антивирусное программное обеспечение могли отличать файлы с потенциально исполняемым кодом от «чистых» таблиц.
¶Безопасность
Файлы XLSM представляют повышенный интерес с точки зрения информационной безопасности, поскольку макросы VBA могут выполнять произвольные системные команды: запускать программы, обращаться к файловой системе, загружать данные из сети. Вредоносное ПО, распространяемое через электронную почту, нередко маскируется под счета, отчёты и другие деловые документы в формате XLSM. По данным ряда исследований безопасности, макросодержащие документы Office стабильно входят в число основных векторов первоначального заражения в целенаправленных атаках.
По умолчанию Microsoft Office блокирует запуск макросов в файлах, полученных из интернета или по электронной почте, отображая предупреждение «Макросы в этом файле отключены». Начиная с обновлений 2022 года Microsoft усилила эту политику: макросы из интернет-источников теперь блокируются без возможности быстрого разблокирования через панель уведомлений, а для разрешения требуется изменение групповой политики или настройка через реестр.
¶Поддержка и совместимость
Кроме Microsoft Excel, формат XLSM читают и редактируют LibreOffice Calc, Apache OpenOffice, Google Таблицы (с ограничениями по поддержке VBA), а также библиотеки для программной работы с файлами — например, Open XML SDK от Microsoft и различные библиотеки на Python. Однако полноценное выполнение макросов VBA обеспечивает только Microsoft Excel; в других редакторах макрокод может быть прочитан, но не исполняется или исполняется частично.
¶Применение
Формат XLSM широко используется в корпоративной среде для автоматизации рутинных операций: сводные отчёты с автоматическим обновлением данных, шаблоны документов с проверкой вводимых значений, инструменты финансового моделирования, системы сбора данных с последующей обработкой. В российской практике макросы на VBA применяются в учётных системах, при подготовке отчётности по стандартам бухгалтерского учёта и в аналитических шаблонах.
¶Ограничения
VBA — устаревающая технология: Microsoft не развивает язык с середины 2000-х годов, не поддерживает 64-битные системные вызовы без ручной настройки и не планирует переноса VBA в облачную версию Excel (Excel Online макросы не выполняет). Альтернативой выступают скрипты на TypeScript для Office (Office Scripts) и надстройки на JavaScript, однако они не заменяют VBA в существующих корпоративных решениях.
Источники:
- Спецификация Office Open XML (ISO/IEC 29500)
- Документация Microsoft по форматам файлов Excel
- Спецификация MS-OVBA (Microsoft Open Specification)
- Документация LibreOffice по поддержке форматов Office
