Нужно спарсить из множества выписок ЕГРН (Росреестр) по несколько строк на одну страницу Excel (как должно быть выглядеть в итоге, таблица прилагается). Так же в архиве несмколько ЕГРН приложено, они каждая в своей папке лежат в архивах ZIP. Исходники в таком виде и есть. Тоесть не плохо бы так сделать чтобы макрос вызывал диалог по выбору ПАПКИ. Где бы он понимал что нужно просмотреть все подпапки (на наличие XML), и желательно чтобы он мог заглядывать в архивы, от туда доставать XML. Последнее просто пожелание. Если не возможно такое то ладно. Главное чтобы он мог из папки влезть во все подпапки и там найти XML.
Спарсить нужно несколько строк из XML и разложить для КАЖДОЙ выписки ЕГРН по кадастровому номеру, в одну строку, эти данные (в примере видно как должно получиться). Важные данные это собственники, их может не быть, может быть 1, 2 или 3 даже 4... Желательно информацию о них так же в одну ячейку сложать, как в примере 1. Собственник, 2.... Можно без нумерации, просто строка за строкой, в ОДНОЙ ячейке (данные после будут в Mapinfo передаваться, а там одна строка, один участок.) В архиве приложения все выписки, в виде архивов и со структурой папок, так же там лежат PDF уже готовых выписко как они обычно выглядят после конвертации из XML.
Нужно спарсить из множества выписок ЕГРН (Росреестр) по несколько строк на одну страницу Excel (как должно быть выглядеть в итоге, таблица прилагается). Так же в архиве несмколько ЕГРН приложено, они каждая в своей папке лежат в архивах ZIP. Исходники в таком виде и есть. Тоесть не плохо бы так сделать чтобы макрос вызывал диалог по выбору ПАПКИ. Где бы он понимал что нужно просмотреть все подпапки (на наличие XML), и желательно чтобы он мог заглядывать в архивы, от туда доставать XML. Последнее просто пожелание. Если не возможно такое то ладно. Главное чтобы он мог из папки влезть во все подпапки и там найти XML.
Спарсить нужно несколько строк из XML и разложить для КАЖДОЙ выписки ЕГРН по кадастровому номеру, в одну строку, эти данные (в примере видно как должно получиться). Важные данные это собственники, их может не быть, может быть 1, 2 или 3 даже 4... Желательно информацию о них так же в одну ячейку сложать, как в примере 1. Собственник, 2.... Можно без нумерации, просто строка за строкой, в ОДНОЙ ячейке (данные после будут в Mapinfo передаваться, а там одна строка, один участок.) В архиве приложения все выписки, в виде архивов и со структурой папок, так же там лежат PDF уже готовых выписко как они обычно выглядят после конвертации из XML.Velius
Меня главным образом интересует возможность парсинга нужных строк в эксель, из выбираемых файлов. Не обязательно из архивов и подпапок. Важно вытащить нужный текст.
Меня главным образом интересует возможность парсинга нужных строк в эксель, из выбираемых файлов. Не обязательно из архивов и подпапок. Важно вытащить нужный текст.Velius
Сообщение отредактировал Velius - Четверг, 28.01.2021, 12:35
Sub Test() Dim xmlDoc As Object, ByDoc, CadastralNumber, Name, OrganizationName Set xmlDoc = CreateObject("MSXML2.DOMDocument") xmlDoc.Load "C:\Users\Сергей\Downloads\kv_.xml" XPath = "//Parcels/Parcel" Set Parcel = xmlDoc.SelectSingleNode(XPath) CadastralNumber = "" If Not Parcel Is Nothing Then CadastralNumber = Parcel.Attributes.getNamedItem("CadastralNumber").Value End If ByDoc = "" XPath = "//Utilization" Set Utilization = xmlDoc.SelectSingleNode(XPath) If Not Utilization Is Nothing Then ByDoc = Utilization.Attributes.getNamedItem("ByDoc").Value End If XPath = "//Rights/Right" Set objListOfNodes = xmlDoc.SelectNodes(XPath) For n = 0 To objListOfNodes.Length - 1 Set Right_ = objListOfNodes(n) For Each Nod In Right_.ChildNodes Select Case Nod.BaseName Case "Name" Name = Nod.Text Case "Owners" 'Если уверены, ' что в документе все на своих местах, иначе перебор в цикле Set Organization = Nod.ChildNodes(0).ChildNodes(0).ChildNodes(0) OrganizationName = Organization.Text Case "Registration" ''ваш Код End Select Next Next End Sub
[/vba] Результат
Для примера нескольких полей [vba]
Код
Sub Test() Dim xmlDoc As Object, ByDoc, CadastralNumber, Name, OrganizationName Set xmlDoc = CreateObject("MSXML2.DOMDocument") xmlDoc.Load "C:\Users\Сергей\Downloads\kv_.xml" XPath = "//Parcels/Parcel" Set Parcel = xmlDoc.SelectSingleNode(XPath) CadastralNumber = "" If Not Parcel Is Nothing Then CadastralNumber = Parcel.Attributes.getNamedItem("CadastralNumber").Value End If ByDoc = "" XPath = "//Utilization" Set Utilization = xmlDoc.SelectSingleNode(XPath) If Not Utilization Is Nothing Then ByDoc = Utilization.Attributes.getNamedItem("ByDoc").Value End If XPath = "//Rights/Right" Set objListOfNodes = xmlDoc.SelectNodes(XPath) For n = 0 To objListOfNodes.Length - 1 Set Right_ = objListOfNodes(n) For Each Nod In Right_.ChildNodes Select Case Nod.BaseName Case "Name" Name = Nod.Text Case "Owners" 'Если уверены, ' что в документе все на своих местах, иначе перебор в цикле Set Organization = Nod.ChildNodes(0).ChildNodes(0).ChildNodes(0) OrganizationName = Organization.Text Case "Registration" ''ваш Код End Select Next Next End Sub
Все поля верные кроме Собственника, их там два. Кроме Государственное казенное учреждение Тюменской области "Управление автомобильных дорог", ИНН: 7203001860 Постоянное (бессрочное) пользование, № 72-72-01/230/2009-130 от 05.08.2009
Есть второй вернее он ПЕРВЫЙ Субъект Российской Федерации Тюменская область Собственность, № 72-72-01/090/2010-237 от 07.04.2010
И я не могу проверить этот макрос в работе.
Воткнул в книгу макросов Excel, исправил в нем путь к выписке XML на тот где она есть у меня запускаю, никакого результата. Что делаю не так?
Причем ни ошибки не выдает ничего.
Может скинете уже Excel файл с макросом, чтобы можно было проверить.
Все поля верные кроме Собственника, их там два. Кроме Государственное казенное учреждение Тюменской области "Управление автомобильных дорог", ИНН: 7203001860 Постоянное (бессрочное) пользование, № 72-72-01/230/2009-130 от 05.08.2009
Есть второй вернее он ПЕРВЫЙ Субъект Российской Федерации Тюменская область Собственность, № 72-72-01/090/2010-237 от 07.04.2010
И я не могу проверить этот макрос в работе.
Воткнул в книгу макросов Excel, исправил в нем путь к выписке XML на тот где она есть у меня запускаю, никакого результата. Что делаю не так?
Причем ни ошибки не выдает ничего.
Может скинете уже Excel файл с макросом, чтобы можно было проверить.Velius
Сообщение отредактировал Velius - Среда, 03.02.2021, 12:25
Он никуда ничего не выводит, сделайте точку останова и смотрите значение переменных.Или в консоль печатайте. Это и есть весь макрос.Это пример работы с xml, на основе его пишите макрос сами.Основные моменты я продемонстрировал.Или
Да здесь ТЗ не на один рубль. Веткой форума не ошиблись?
Он никуда ничего не выводит, сделайте точку останова и смотрите значение переменных.Или в консоль печатайте. Это и есть весь макрос.Это пример работы с xml, на основе его пишите макрос сами.Основные моменты я продемонстрировал.Или
Попросите модераторов перенести тему в в платный раздел. И сразу же готовьте тз с пояснениями что и куда заносится.Какие бывают исключения, скользкие моменты и прочее. И ,скорее всего, будет несколько макросов на обработку разных типов файлов, если структура или алгоритм отличаются.
Без конкретного тз сказать трудно, но то что больше тыщи это точно
Попросите модераторов перенести тему в в платный раздел. И сразу же готовьте тз с пояснениями что и куда заносится.Какие бывают исключения, скользкие моменты и прочее. И ,скорее всего, будет несколько макросов на обработку разных типов файлов, если структура или алгоритм отличаются.
И сразу же готовьте тз с пояснениями что и куда заносится.Какие бывают исключения, скользкие моменты и прочее.
Вот попал... Знать бы еще что за ТЗ и как его описывать. Структура на мой взгляд там одна и та же. Есть просто различия приложенные в файле, касаются именно количества собственников, их может не быть, может быть один, два и так далее это все.
И сразу же готовьте тз с пояснениями что и куда заносится.Какие бывают исключения, скользкие моменты и прочее.
Вот попал... Знать бы еще что за ТЗ и как его описывать. Структура на мой взгляд там одна и та же. Есть просто различия приложенные в файле, касаются именно количества собственников, их может не быть, может быть один, два и так далее это все.Velius
Вопрос кто возьмется. Сколько стоит. И еще одно уточнение. Список кадастровых номеров уже есть в файле эксель. Нужно согласно этого списка во вложенных папках обновить данные из архивов. (используя последнюю дату архива)
Вопрос кто возьмется. Сколько стоит. И еще одно уточнение. Список кадастровых номеров уже есть в файле эксель. Нужно согласно этого списка во вложенных папках обновить данные из архивов. (используя последнюю дату архива)Velius
Будет ТЗ с примерами, только тогда возьмусь. Будут желающие, я не против.Очередь не забиваю. PS:ТЗ-это техническое задание, где описано, что должен делать макрос в различных ситуациях с примерами. Хотя бы так
Будет ТЗ с примерами, только тогда возьмусь. Будут желающие, я не против.Очередь не забиваю. PS:ТЗ-это техническое задание, где описано, что должен делать макрос в различных ситуациях с примерами. Хотя бы такdoober