Загрузка рабочих книг Excel

WEB-приложение Сведение отчетности (29.04.2026) | (одним файлом) (cсылка)
Загрузка рабочих книг Excel
В дополнение к ранее описанным объектам, скрипт загрузки рабочей книги Excel имеет доступ к следующему: Переменная WorkBook : ExcelWorkBook (только для чтения) содержит объект-рабочую книгу. Через эту переменную вы можете обращаться к любым свойствам и методам объектной модели Microsoft Excel.
Пример | Ниже приведен откомментированный пример скрипта загрузки рабочей книги Excel:
    001'Так можно и нужно анализировать ячейки рабочей книги Excel.
    002'WorkBook - объект рабочей книги.
    003
    004'Фактически здесь написано: если на листе "Лист 1" в ячейке D13 содержится значение,
    005'отличное от "Форма 160/128q", то это не "наша" рабочая книга, ее не надо обрабатывать.
    006
    007if WorkBook.WorkSheets("Лист 1").Range("D13").Value <> "Форма 160/128q" then
    008  'Текстовый файл не признан "своим".
    009  InvalidData = True
    010else
    011  'Следите за отступами.
    012
    013  Message("Анализируем файл.") 'Сообщение пользователю в протокол загрузки.
    014
    015  '1. Создание корневого элемента REPORTS
    016  set xml.documentElement = xml.createElement("REPORTS")
    017
    018  '2. Создание элемента-отчета. Повторять столько раз, сколько нужно отчетов.
    019  with xml.documentElement.appendChild(xml.createElement("REPORT"))
    020
    021    '3. Атрибуты отчета
    022
    023    .appendChild(xml.createElement("AGENT")).appendChild(xml.createTextNode("Мнемокод контрагента"))
    024    .appendChild(xml.createElement("FORM")).appendChild(xml.createTextNode("Мнемокод формы"))
    025    .appendChild(xml.createElement("BDATE")).appendChild(xml.createTextNode("Дата в формете YYYY-MM-DD"))
    026    .appendChild(xml.createElement("NOTE")).appendChild(xml.createTextNode("Примечание!!!"))
    027    .appendChild(xml.createElement("KIND")).appendChild(xml.createTextNode("0")) '0-первичный, 1-сводный
    028
    029    'Также можно установить дополнительные атрибуты отчета:
    030    '.appendChild(xml.createElement("CATALOG")).appendChild(xml.createTextNode("Наименование каталога"))
    031    '.appendChild(xml.createElement("CHECKED")).appendChild(xml.createTextNode("1"))
    032    '.appendChild(xml.createElement("STATE")).appendChild(xml.createTextNode("2"))
    033    '.appendChild(xml.createElement("SENT")).appendChild(xml.createTextNode("1"))
    034
    035    '4. Список подотчетов
    036    with .appendChild(xml.createElement("SUBREPORTS"))
    037
    038      '5. Главный подотчет (без мнемокода)
    039      with .appendChild(xml.createElement("SUBREPORT"))
    040
    041        '6. Список значений
    042        with .appendChild(xml.createElement("VALUES"))
    043
    044          'Создать столько значений, сколько нужно.
    045          '7. Значение числового показателя
    046          with .appendChild(xml.createElement("VALUE"))
    047            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    048            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    049          end with
    050
    051          '8. Значение строкового показателя
    052          with .appendChild(xml.createElement("VALUE"))
    053            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    054            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    055          end with
    056
    057          '9. Значение показателя типа "дата".
    058          with .appendChild(xml.createElement("VALUE"))
    059            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    060            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    061          end with
    062
    063        end with
    064
    065        '10. Таблицы показателей - если редакция содержит таблицы показателей.
    066        with .appendChild(xml.createElement("TABLES"))
    067
    068          '11. Таблица. Повторять столько раз, сколько нужно таблиц.
    069          with .appendChild(xml.createElement("TABLE"))
    070
    071            '12. Наименование таблицы
    072            .appendChild(xml.createElement("NAME")).appendChild(xml.createTextNode("Наименование таблицы"))
    073
    074            '13. Строки таблицы
    075            with .appendChild(xml.createElement("ROWS"))
    076
    077              '14. Строка таблицы
    078              with .appendChild(xml.createElement("ROW"))
    079
    080                '15. Значение строкового показателя
    081                with .appendChild(xml.createElement("VALUE"))
    082                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    083                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    084                end with
    085
    086                with .appendChild(xml.createElement("VALUE"))
    087                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    088                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    089                end with
    090
    091              end with
    092
    093              '16. Строка таблицы
    094              with .appendChild(xml.createElement("ROW"))
    095
    096                '17. Значение строкового показателя
    097                with .appendChild(xml.createElement("VALUE"))
    098                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    099                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    100                end with
    101
    102                with .appendChild(xml.createElement("VALUE"))
    103                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    104                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    105                end with
    106
    107              end with
    108
    109            end with
    110
    111          end with
    112
    113        end with
    114
    115      end with
    116
    117      '18. Подотчет. Повторять столько раз, сколько нужно подотчетов.
    118      with .appendChild(xml.createElement("SUBREPORT"))
    119
    120        '19. Мнемокод разреза подотчета
    121        .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод разреза"))
    122
    123        '20. Список занчений
    124        with .appendChild(xml.createElement("VALUES"))
    125
    126          'Создать столько значений, сколько нужно.
    127          '21. Значение числового показателя
    128          with .appendChild(xml.createElement("VALUE"))
    129            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    130            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    131          end with
    132
    133          '22. Значение строкового показателя
    134          with .appendChild(xml.createElement("VALUE"))
    135            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    136            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    137          end with
    138
    139          '23. Значение показателя типа "дата".
    140          with .appendChild(xml.createElement("VALUE"))
    141            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    142            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    143          end with
    144
    145        end with
    146
    147        'Создать таблицы, если они нужны.
    148
    149      end with
    150
    151    end with
    152  end with
    153end if