Страницы: 1
RSS
Извлечение данных из XML файлов в Excel
 
Добрый день! Необходимо из XML файлов извлечь определенную информацию. XML файлы и пример, что необходимо получить прикрепил к теме.
Можно это как то сделать макросом? Помогите пож-та, очень нужно!
Изменено: Илья Николаевич - 26.09.2017 17:24:40
 
1.Можно было скопировать xml на второй лист "Результат".
2.Что необходимо вытащить - загадка.
3.Личную информацию о людях выкладывать - не красиво.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Исправился) Необходимо получить данные по полю ОКПО и по значение полей СумОтч
 
Вариант 1. Если знаем что и где лежит.
Код
Sub nnn()
    Dim a()
    Dim fl$
'---------------
    fl = ThisWorkbook.Path & "\NO_BOUPR_6617_6617_6617003362661701001_20170221_C90CAFCD7904471D8AF57A83F70E0863.xml"
    With CreateObject("MSXML2.DOMDocument")
        .Load fl
        ReDim a(1 To 7)
        a(1) = .SelectSingleNode("//Файл/Документ/СвНП").GetAttribute("ОКПО")
        a(2) = .SelectSingleNode("//Файл/Документ/Баланс/Актив").GetAttribute("СумОтч")
        a(3) = .SelectSingleNode("//Файл/Документ/Баланс/Актив/МатВнеАкт").GetAttribute("СумОтч")
        a(4) = .SelectSingleNode("//Файл/Документ/Баланс/Актив/НеМатФинАкт").GetAttribute("СумОтч")
        a(5) = .SelectSingleNode("//Файл/Документ/Баланс/Актив/Запасы").GetAttribute("СумОтч")
        a(6) = .SelectSingleNode("//Файл/Документ/Баланс/Актив/ДенежнСр").GetAttribute("СумОтч")
        a(7) = .SelectSingleNode("//Файл/Документ/Баланс/Актив/ФинВлож").GetAttribute("СумОтч")
    End With
    Cells(3, 1).Resize(1, UBound(a)) = a
End Sub
Вариант 2. Если знаем не всё.
Код
Sub uuu()
    Dim a()
    Dim nd, at
    Dim fl$
'---------------
    fl = ThisWorkbook.Path & "\NO_BOUPR_6617_6617_6617003362661701001_20170221_C90CAFCD7904471D8AF57A83F70E0863.xml"
    With CreateObject("MSXML2.DOMDocument")
        .Load fl
        ReDim a(1 To 7)
        For Each nd In .getElementsByTagName("*")
            If nd.NodeName = "СвНП" Then
                a(1) = nd.GetAttribute("ОКПО")
            Else
                For Each at In nd.Attributes
                    If at.Name = "КодСтроки" Then
                        Select Case at.Value
                            Case "1600": a(2) = nd.GetAttribute("СумОтч")
                            Case "1150": a(3) = nd.GetAttribute("СумОтч")
                            Case "1170": a(4) = nd.GetAttribute("СумОтч")
                            Case "1210": a(5) = nd.GetAttribute("СумОтч")
                            Case "1250": a(6) = nd.GetAttribute("СумОтч")
                            Case "1260": a(7) = nd.GetAttribute("СумОтч")
                        End Select
                    End If
                Next
            End If
        Next
    End With
    Cells(3, 1).Resize(1, UBound(a)) = a
End Sub
Изменено: kalbasiatka - 26.09.2017 23:44:11
 
Спасибо огромное!
Очень выручили!
 
Добрый день!
А можно еще сделать так чтобы искал информацию в файлах, которые лежат в определенной папке, например ("C:\Users\Zver\Desktop\Список файлов")?
Познаний пока к сожалению не хватает, чтобы сделать самому.
Страницы: 1
Наверх