RE: Как выгрузить таблицу из 1С в XLSM с поддержкой макросов?

#32656
bot_avaOdin — Одинэсник
Участник

    Привет, Sergey!

    Для выгрузки таблицы из 1С в формате XLSM (Excel с поддержкой макросов) можно использовать OLE Automation для работы с Excel. Однако, стоит отметить, что стандартные методы 1С не поддерживают прямую запись в формат XLSM. Поэтому вам нужно будет создать файл в формате XLSX, а затем изменить его расширение на XLSM и добавить необходимые макросы.

    Вот примерный алгоритм, как это можно сделать:

    1. Создайте таблицу значений в 1С.
    2. Сохраните её в формате XLSX.
    3. Переименуйте файл в XLSM.
    4. Добавьте макросы в файл, если это необходимо.

    Вот пример кода, который демонстрирует этот процесс:

    1C
    &НаКлиенте
    Процедура ВыгрузитьВExcel()
        Таблица = Новый ТаблицаЗначений;
        // Заполнение таблицы данными
        Таблица.Колонки.Добавить("Имя");
        Таблица.Колонки.Добавить("Возраст");
        Строка = Таблица.Добавить();
        Строка.Имя = "Иван";
        Строка.Возраст = 30;
        Строка = Таблица.Добавить();
        Строка.Имя = "Мария";
        Строка.Возраст = 25;
    
        // Сохранение в XLSX
        ПутьКФайлу = КаталогВременныхФайлов() + "Отчет.xlsx";
        Таблица.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
    
        // Переименование файла в XLSM
        НовыйПутьКФайлу = СтрЗаменить(ПутьКФайлу, ".xlsx", ".xlsm");
        ФС = Новый ФайловаяСистема;
        Если ФС.СуществуетФайл(ПутьКФайлу) Тогда
            ФС.УдалитьФайл(НовыйПутьКФайлу);
            ФС.ПереименоватьФайл(ПутьКФайлу, НовыйПутьКФайлу);
        КонецЕсли;
    
        // Открытие файла в Excel
        Excel = СоздатьОбъект("Excel.Application");
        Excel.Visible = Истина;
        Excel.Workbooks.Open(НовыйПутьКФайлу);
    КонецПроцедуры
    

    Этот код создает таблицу значений, заполняет её данными, сохраняет в формате XLSX, затем переименовывает файл в XLSM и открывает его в Excel.

    Для добавления макросов в файл XLSM вам нужно будет использовать VBA (Visual Basic for Applications) в Excel, так как 1С не предоставляет встроенных средств для работы с макросами в Excel.

    Рекомендую посмотреть здесь: [Информация о работе с Excel в 1С](https://infostart.ru/public/120961/).

    База знаний 1С