Страницы: 1
RSS
Объединение десятков документов XML с одинаковой структурой в один Excel с помощью VBA, Объединение десятков документов XML с одинаковой структурой в один Excel с помощью VBA
 
Добрый день,

Ситуация следующая - на днях получил WinRar на пару гигов (открытая база ФНС), в котором находится добрая сотня документов в формате XML, они подгружаются в Excel поштучно, но это занимает прилично времени. При этом столбцы пляшут

Может кто подсказать макрос VBA, который объединит эту сотню документов, хранящихся в одной папке в единый док. (пример этих чудо таблиц в xml загрузил сюда https://yadi.sk/d/FkMWmBzc3VUkms т.к. их не получилось подгрузить напрямую)

Для быстроты расчета можно значительно уменьшить количество столбцов до тех, которые есть в приложенном доке "Названия нужных столбцов", который доступен в яндекс диске
Изменено: Kosme - 07.05.2018 15:56:33
 
Жаль, что только VBA. Так можно было бы наверное в PQ
F1 творит чудеса
 
Kosme, Вам и правда проще воспользоваться Power Query. Там все очень просто и интуитивно понятно. Если все файлы однотипные, конечно.
 
да мне главное объединить это дело  - Power Query это надстройка я так понимаю?
 
Вас что в гугле забанили?
Вот горшок пустой, он предмет простой...
 
Kosme, в общем то у меня получилось как-то так. Вам нужно только поменять источник фалов (путь к папке со всеми xml файлами) и удалить ненужные столбцы. может Максим Зеленский, предложит Вам более интересное решение (он в PQ спец), так как я только начинаю в PQ разбираться и делаю все вручную без языка М.
Для работы понадобится установленная надстройка. Качается на сайте майков.
Ссылка на яндекс https://yadi.sk/d/GxUUdenY3VUs2X
Изменено: JasonJuzo - 07.05.2018 16:24:28
 
JasonJuzo, да там все примитивно, на кнопках и делается, особого мастерства там не нужно. Раскапываем нужные вложенные таблицы и удаляем лишнее.
Код
let
    Source = Folder.Files("C:\Users\m.zelenskiy\Downloads\xls\Обмен"),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Extension] = ".xml")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Content"}),
    #"Added Custom" = Table.AddColumn(#"Removed Other Columns", "From XML", each Xml.Tables([Content])),
    #"Removed Other Columns1" = Table.SelectColumns(#"Added Custom", {"From XML"}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Removed Other Columns1", "From XML", {"Документ"}, {"Документ"}),
    #"Expanded {0}1" = Table.ExpandTableColumn(#"Expanded {0}", "Документ", {"ОргВклМСП", "Attribute:ДатаСост", "Attribute:ДатаВклМСП", "Attribute:ВидСубМСП", "Attribute:КатСубМСП", "Attribute:ПризНовМСП", "СвЛиценз", "ИПВклМСП"}, {"ОргВклМСП", "Attribute:ДатаСост", "Attribute:ДатаВклМСП", "Attribute:ВидСубМСП", "Attribute:КатСубМСП", "Attribute:ПризНовМСП", "СвЛиценз", "ИПВклМСП"}),
    #"Expanded {0}2" = Table.ExpandTableColumn(#"Expanded {0}1", "ОргВклМСП", {"Attribute:НаимОрг", "Attribute:НаимОргСокр", "Attribute:ИННЮЛ"}, {"Attribute:НаимОрг", "Attribute:НаимОргСокр", "Attribute:ИННЮЛ"}),
    #"Expanded {0}3" = Table.ExpandTableColumn(#"Expanded {0}2", "ИПВклМСП", {"ФИОИП", "Attribute:ИННФЛ"}, {"ФИОИП", "Attribute:ИННФЛ"}),
    #"Expanded {0}4" = Table.ExpandTableColumn(#"Expanded {0}3", "ФИОИП", {"Attribute:Фамилия", "Attribute:Имя", "Attribute:Отчество"}, {"Attribute:Фамилия", "Attribute:Имя", "Attribute:Отчество"}),
    #"Removed Other Columns2" = Table.SelectColumns(#"Expanded {0}4",{"Attribute:ДатаСост", "Attribute:ДатаВклМСП", "Attribute:ВидСубМСП", "Attribute:КатСубМСП", "Attribute:ПризНовМСП", "Attribute:ИННФЛ", "Attribute:Фамилия", "Attribute:Имя", "Attribute:Отчество", "Attribute:НаимОрг", "Attribute:НаимОргСокр", "Attribute:ИННЮЛ"})
in
    #"Removed Other Columns2"

ну еще переименовать потом столбцы
F1 творит чудеса
 
Kosme, я здесь более-менее детально расписывал как из XML данные получать: Получить данные из файлов XML при помощи Power Query
Там в чем может быть засада - кодировка. Порой надо принудительно указывать на стадии получения данных.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо огромное всем!!!!!  
 
Всех с праздниками!
Изменено: katran - 03.01.2020 14:11:09
Страницы: 1
Читают тему
Наверх