Запрос и анализ значения атрибута xml в XLS с использованием VBA - PullRequest
1 голос
/ 04 марта 2011

Я пытаюсь открыть / загрузить файл XML, указанный на листе Excel в диапазоне B2.Затем выполните поиск в списке атрибутов XML для name=FUNCTIONAL_ITEM и получите все значения атрибутов после ">.

. В следующем примере я хотел бы извлечь значение 8, 9 и 10.

<Attribute name="BIN" dataType="String" unit="" multiplier="" tag="LINE,MRPM">1</Attribute>
<Attribute name="FUNCTIONAL_ITEM" dataType="Double" unit="" multiplier="" tag="LINE,LINE DB">8</Attribute>
<Attribute name="FUNCTIONAL_ITEM" dataType="Double" unit="" multiplier="" tag="LINE,LINE DB">9</Attribute>
<Attribute name="FUNCTIONAL_ITEM" dataType="Double" unit="" multiplier="" tag="LINE,LINE DB">10</Attribute>

Может ли кто-нибудь указать мне правильное направление для реализации этого.

1 Ответ

1 голос
/ 05 марта 2011

Вам нужно использовать XPath. Предполагая, что у вас есть XML-документ в DomDocument60 объекте, который мы назовем d, и вы объявили переменную IXMLDOMNodeList с именем i, используйте следующее:

Set i = d.selectNodes("//Attribute[@name='FUNCTIONAL ITEM']")

Затем можно выполнить итерацию по узлам в i и извлечь свойство text из каждого узла.

Вот довольно минимальная программа для демонстрации (вам нужно добавить ссылку на «Microsoft XML, v6.0» через Сервис> Ссылки, если вы еще этого не сделали):

Sub main()

Dim d As DOMDocument60
Dim i As IXMLDOMNodeList
Dim n As IXMLDOMNode

Set d = New DOMDocument60
d.Load 'file path goes here

Debug.Print "*****"
Set i = d.selectNodes("//Attribute[@name='FUNCTIONAL ITEM']")
For Each n In i
    Debug.Print n.Text
Next n
Debug.Print "*****"

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...