Для достижения своей цели вы можете использовать Microsoft XML library
. Вот Sub
, который делает то, что вам нужно:
Sub getNodesValues()
Dim xmlDoc As New DOMDocument30 'Need Reference "Microsoft Xml, 3.0"
xmlDoc.Load ("C:\Users\myusername\Desktop\test.xml") 'Set your file name
xmlDoc.async = False
Dim nodeList As IXMLDOMNodeList
Dim mainNode As IXMLDOMNode
Dim arr() As String 'Array that will store results
Dim index As Long: index = 1
'This uses xPath to access an element
Set nodeList = xmlDoc.SelectNodes("//P/E/B")
ReDim arr(1 To nodeList.Length)
'For each node in List
For Each mainNode In nodeList
arr(index) = mainNode.Text 'Store value in array
'Show node name and value in immediate console
Debug.Print mainNode.nodeName & ":" & mainNode.Text
index = index + 1
Next mainNode
'Do what you have to do with your array
'[..]
End Sub
Важные замечания
Вы загружаете свой файл через эту строку:
xmlDoc.Load ("C:\Users\myusername\Desktop\test.xml") 'Set your file name
И с этимВ строке вы указываете библиотеке, что искать в файле .xml
:
Set nodeList = xmlDoc.SelectNodes("//P/E/B")
В этом примере мы ищем тег P
в любой позиции, который содержит тег E
, которыйсодержит тег B
. Вы можете изменить это на что угодно.
Надеюсь, это поможет.