Страницы: 1
RSS
Написать макрос для записи данных в таблицу Excel из XML файлов
 
Структура файлов XML приведена ниже.

Есть исходный файл, в котором настроен импорт данных из указанного файла XML (при нажатии кнопки). Запись каждого нового файла XML осуществляется в конец файла Excel.

Необходимо настроить выгрузку в соответствии с новой структурой файла.
Файл Excel "Макрос_итог" c новой структурой прилагаю.
В нем добавлены 2 столбца в середине таблице (красная заливка над ячейками), удален последний столбец (так же помечен красной заливкой в файле "макрос-итог").

Необходимо чтобы данные вносились в одну строку по каждой записи (каждая запись ограничена тегами <СведОтказ></СведОтказ>.
Пример загрузки в файле "Макрос_исходный".

Каждая запись может содержать несколько значений в поле <КодПричинаОтказ>.
Необходимо настроить выгрузку этих данных в одну ячейку, через запятую, если это возможно. При этом код "0000" необходимо игнорировать.
Например:

1) <КодПричинаОтказ>0000</КодПричинаОтказ>
   <КодПричинаОтказ>2002</КодПричинаОтказ>
в ячейке должно быть значение "2002".

2) <КодПричинаОтказ>0000</КодПричинаОтказ>
   <КодПричинаОтказ>1002</КодПричинаОтказ>
   <КодПричинаОтказ>2002</КодПричинаОтказ>
в ячейке должно отображаться значение "1102, 2002".

Также желательно предусмотреть сохранение текстового формата данных в некоторых ячейках (т.к. в некоторых ячейках присутствуют длинные цифровые значения, и при импорте хвостик теряется).

И самое главное необходимо дать пояснения по коду, и объяснить что и где нужно настроить (человеку без опыта программирования),
в случае, если понадобится добавить или удалить столбец.
Код
<?xml version="1.0" encoding="UTF-8"?>
<СообщОтказРастор>
    <СлужЧасть>
        <ВерсияФормата>1</ВерсияФормата>
        <ВерсПрог>Текст</ВерсПрог>
        <ТипИнф>01</ТипИнф>
        <БИККОНапрв>999999999</БИККОНапрв>
        <ДатаСообщения>00/00/2000</ДатаСообщения>
        <УполнСотрудн>Руководитель</УполнСотрудн>
        <ФИОУполнСотрудн>
            <Фам>ИВАНОВ</Фам>
            <Имя>ИВАН</Имя>
            <Отч>ИВАНОВИЧ</Отч>
        </ФИОУполнСотрудн>
        <ТелУполнСотрудн>(495)0000000</ТелУполнСотрудн>
        <ЭлектроннаяПочта>pochta@mail.ru</ЭлектроннаяПочта>
    </СлужЧасть>
    <ИнформЧасть>
        <ИнфБанк>
            <РегНомКО>4444</РегНомКО>
            <БИККО>999999999</БИККО>
            <ОКАТОКО>22</ОКАТОКО>
        </ИнфБанк>
        <СведПредстав>
            <ПризнакПредставСвед>1</ПризнакПредставСвед>
            <ИнфФилиал>
                <НомФл>22</НомФл>
                <БИКФл>999999999</БИКФл>
                <ОКАТОФл>22</ОКАТОФл>
            </ИнфФилиал>
            <СведОтказ>
                <НомерЗаписи>2018_2275_0000_00_0000000000</НомерЗаписи>
                <ТипЗаписи>1</ТипЗаписи>
                <ПризнакИнф>0</ПризнакИнф>
                <КодОтказа>00</КодОтказа>
                <КодПричинаОтказ>0000</КодПричинаОтказ>
                <КодПричинаОтказ>2002</КодПричинаОтказ>
                <ИнаяПричинаОтказа>Текст текст текст текст.</ИнаяПричинаОтказа>
                <ДатаОтказа>01/01/2010</ДатаОтказа>
                <ТипКлиента>1</ТипКлиента>
                <ПризнакКлиента>1</ПризнакКлиента>
                <СведЮЛ>
                    <НаимЮЛ>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ А</НаимЮЛ>
                    <ИННЮЛ>1111111111</ИННЮЛ>
                    <КППЮЛ>111111111</КППЮЛ>
                    <ОКПОЮЛ>11111111</ОКПОЮЛ>
                    <ОКВЭД2ЮЛ>46.72</ОКВЭД2ЮЛ>
                    <ОГРНЮЛ>1111111111111</ОГРНЮЛ>
                    <АдрРегЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>94</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>111</Дом>
                        <Корп></Корп>
                        <Оф>1</Оф>
                    </АдрРегЮЛ>
                    <АдрЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>94</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>111</Дом>
                        <Корп></Корп>
                        <Оф>1</Оф>
                    </АдрЮЛ>
                </СведЮЛ>
                <Коммент>Текст текст текст текст текст текст текст.</Коммент>
            </СведОтказ>
            <СведОтказ>
                <НомерЗаписи>2018_2275_0000_00_0000000001</НомерЗаписи>
                <ТипЗаписи>1</ТипЗаписи>
                <ПризнакИнф>0</ПризнакИнф>
                <КодОтказа>00</КодОтказа>
                <КодПричинаОтказ>0000</КодПричинаОтказ>
                <КодПричинаОтказ>1002</КодПричинаОтказ>
                <КодПричинаОтказ>2002</КодПричинаОтказ>
                <ИнаяПричинаОтказа>Текст текст текст текст.</ИнаяПричинаОтказа>
                <ДатаОтказа>01/01/2010</ДатаОтказа>
                <ТипКлиента>1</ТипКлиента>
                <ПризнакКлиента>1</ПризнакКлиента>
                <СведЮЛ>
                    <НаимЮЛ>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ Б</НаимЮЛ>
                    <ИННЮЛ>1111111112</ИННЮЛ>
                    <КППЮЛ>111111112</КППЮЛ>
                    <ОКПОЮЛ>11111112</ОКПОЮЛ>
                    <ОКВЭД2ЮЛ>46.73</ОКВЭД2ЮЛ>
                    <ОГРНЮЛ>1111111111112</ОГРНЮЛ>
                    <АдрРегЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>63</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>112</Дом>
                        <Корп></Корп>
                        <Оф>2</Оф>
                    </АдрРегЮЛ>
                    <АдрЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>63</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>112</Дом>
                        <Корп></Корп>
                        <Оф>2</Оф>
                    </АдрЮЛ>
                </СведЮЛ>
                <Коммент>Текст текст текст текст текст текст текст.</Коммент>
            </СведОтказ>
            <СведОтказ>
                <НомерЗаписи>2018_2275_0000_00_0000000002</НомерЗаписи>
                <ТипЗаписи>1</ТипЗаписи>
                <ПризнакИнф>0</ПризнакИнф>
                <КодОтказа>00</КодОтказа>
                <КодПричинаОтказ>0000</КодПричинаОтказ>
                <КодПричинаОтказ>1002</КодПричинаОтказ>
                <КодПричинаОтказ>2002</КодПричинаОтказ>
                <ИнаяПричинаОтказа>Текст текст текст текст.</ИнаяПричинаОтказа>
                <ДатаОтказа>01/01/2010</ДатаОтказа>
                <ТипКлиента>1</ТипКлиента>
                <ПризнакКлиента>1</ПризнакКлиента>
                <СведЮЛ>
                    <НаимЮЛ>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ В</НаимЮЛ>
                    <ИННЮЛ>1111111113</ИННЮЛ>
                    <КППЮЛ>111111113</КППЮЛ>
                    <ОКПОЮЛ>11111113</ОКПОЮЛ>
                    <ОКВЭД2ЮЛ>49.41</ОКВЭД2ЮЛ>
                    <ОГРНЮЛ>1111111111113</ОГРНЮЛ>
                    <АдрРегЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>94</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>113</Дом>
                        <Корп></Корп>
                        <Оф>3</Оф>
                    </АдрРегЮЛ>
                    <АдрЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>94</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>113</Дом>
                        <Корп></Корп>
                        <Оф>3</Оф>
                    </АдрЮЛ>
                </СведЮЛ>
                <Коммент>Текст текст текст текст текст текст текст.</Коммент>
            </СведОтказ>
        </СведПредстав>
        <СведПредстав>
            <ПризнакПредставСвед>1</ПризнакПредставСвед>
            <ИнфФилиал>
                <НомФл>0</НомФл>
                <БИКФл>999999999</БИКФл>
                <ОКАТОФл>50</ОКАТОФл>
            </ИнфФилиал>
            <СведОтказ>
                <НомерЗаписи>2018_2275_0000_00_0000000003</НомерЗаписи>
                <ТипЗаписи>1</ТипЗаписи>
                <ПризнакИнф>0</ПризнакИнф>
                <КодОтказа>00</КодОтказа>
                <КодПричинаОтказ>0000</КодПричинаОтказ>
                <КодПричинаОтказ>2002</КодПричинаОтказ>
                <ИнаяПричинаОтказа>Текст текст текст текст.</ИнаяПричинаОтказа>
                <ДатаОтказа>01/01/2010</ДатаОтказа>
                <ТипКлиента>1</ТипКлиента>
                <ПризнакКлиента>1</ПризнакКлиента>
                <СведЮЛ>
                    <НаимЮЛ>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ Г</НаимЮЛ>
                    <ИННЮЛ>1111111114</ИННЮЛ>
                    <КППЮЛ>111111114</КППЮЛ>
                    <ОКПОЮЛ>11111114</ОКПОЮЛ>
                    <ОКВЭД2ЮЛ>43.39</ОКВЭД2ЮЛ>
                    <ОГРНЮЛ>1111111111114</ОГРНЮЛ>
                    <АдрРегЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>52</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>114А</Дом>
                        <Корп></Корп>
                        <Оф>4</Оф>
                    </АдрРегЮЛ>
                    <АдрЮЛ>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>52</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>114А</Дом>
                        <Корп></Корп>
                        <Оф>4</Оф>
                    </АдрЮЛ>
                </СведЮЛ>
                <Коммент>Текст текст текст текст текст текст текст.</Коммент>
            </СведОтказ>
        </СведПредстав>
        <СведПредстав>
            <ПризнакПредставСвед>1</ПризнакПредставСвед>
            <ИнфФилиал>
                <НомФл>00</НомФл>
                <БИКФл>999999999</БИКФл>
                <ОКАТОФл>65</ОКАТОФл>
            </ИнфФилиал>
            <СведОтказ>
                <НомерЗаписи>2018_2275_0000_00_0000000004</НомерЗаписи>
                <ТипЗаписи>1</ТипЗаписи>
                <ПризнакИнф>0</ПризнакИнф>
                <КодОтказа>00</КодОтказа>
                <КодПричинаОтказ>0000</КодПричинаОтказ>
                <ИнаяПричинаОтказа>Текст текст текст текст.</ИнаяПричинаОтказа>
                <ДатаОтказа>01/01/2010</ДатаОтказа>
                <ТипКлиента>3</ТипКлиента>
                <ПризнакКлиента>1</ПризнакКлиента>
                <СведФЛИП>
                    <ФИОФЛИП>
                        <Фам>ПЕТРОВ</Фам>
                        <Имя>ПЕТР</Имя>
                        <Отч>ПЕТРОВИЧ</Отч>
                    </ФИОФЛИП>
                    <ИННФЛИП>121212121212</ИННФЛИП>
                    <ОКВЭД2ИП>49.41</ОКВЭД2ИП>
                    <ОГРНИП>151515151515151</ОГРНИП>
                    <АдрРегИП>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>04</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>115</Дом>
                        <Корп></Корп>
                        <Оф>5</Оф>
                    </АдрРегИП>
                    <СведДокУдЛичн>
                        <ВидДокКод>21</ВидДокКод>
                        <ВидДокНаименование>Паспорт гражданина Российской Федерации (для гражданина Российской Федерации, достигшего 14 лет)</ВидДокНаименование>
                        <СерияДок>4444</СерияДок>
                        <НомДок>666666</НомДок>
                        <ДатВыдачиДок>01/01/2000</ДатВыдачиДок>
                        <КемВыданДок>УПРАВЛЕНИЕМ ВНУТРЕННИХ ДЕЛ</КемВыданДок>
                        <КодПодр>000-000</КодПодр>
                    </СведДокУдЛичн>
                    <ДатаРождения>01/01/1900</ДатаРождения>
                    <МестоРожд>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЙСКАЯ ФЕДЕРАЦИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>04</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                    </МестоРожд>
                    <КодОКСМ>643</КодОКСМ>
                    <СтранаНаименование>РОССИЯ</СтранаНаименование>
                    <ПризнакПубЛицо>0</ПризнакПубЛицо>
                    <АдрРег>
                        <КодОКСМ>643</КодОКСМ>
                        <СтранаНаименование>РОССИЯ</СтранаНаименование>
                        <КодСубъектаПоОКАТО>04</КодСубъектаПоОКАТО>
                        <Район></Район>
                        <Пункт>ГОРОД Г</Пункт>
                        <Улица>УЛИЦА УЛ</Улица>
                        <Дом>2</Дом>
                        <Корп></Корп>
                        <Оф>10</Оф>
                    </АдрРег>
                </СведФЛИП>
                <Коммент>Текст текст текст текст текст текст текст.</Коммент>
            </СведОтказ>
        </СведПредстав>
    </ИнформЧасть>
</СообщОтказРастор>

Изменено: E1zbth - 17.09.2018 15:08:26
 
Каков бюджет этого предприятия?
 
Понятия не имею сколько это стоит, выслушаю предложения исполнителей  
 
Цитата
No name написал:
Понятия не имею сколько это стоит
Готовы выплатить любую сумму?
 
Интересует адекватный исполнитель, устанавливающий стоимость своей работы исходя из сложности реализации и в пределах рынка.
 
Я, конечно, извиняюсь - не сталкивался с подобным... Но, E1zbth, разве файл "Макрос_итог.xlsm" не работает? Пробовали? :)
Изменено: Ренат - 17.09.2018 20:42:39 (правописание...)
Успехов. И мне того же. Благодарю. :)
 
Работает частично, но экспорт некорректен)
Не выполняются следующие условия:

Необходимо  чтобы данные  вносились в одну строку по каждой записи (каждая запись  ограничена  тегами <СведОтказ></СведОтказ>.
Сейчас данные размазываются по ячейкам и вместо одной строки (как в исходном файле) получается 12.

Каждая запись может содержать несколько значений в поле <КодПричинаОтказ>.
Необходимо    настроить выгрузку этих данных в одну ячейку, через запятую, если это    возможно. При этом код "0000" необходимо игнорировать.
Ну и необходимость этой доработки появилась только с добавлением нового столбца, т.е. не была реализована ранее.
 
Цитата
No name написал:
Понятия не имею сколько это стоит
Информация  для предварительной оценки макроса по импорту файла.
У Вас 90 столбцов, каждый столбец описывается в коде.
Страницы: 1
Наверх