2011-03-04 64 views
1

我试图打开/加载在B2范围内的Excel工作表中指定的XML文件。然后,搜索name=FUNCTIONAL_ITEM的XML属性列表并获取">后的所有属性值。使用VBA查询xml属性值并将其解析为XLS

在下面的示例中,我想提取出值8,910

<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> 

有人请指出我在正确的方向来实现这一点。

+0

对不起,此问题是广泛的。将其分解为独立的步骤和研究。 1.从范围中检索文件名。 2.打开一个Xml文件。 3.从VBA解析Xml。我猜你可以在Stack Overflow找到所有已经*的答案。如果不是,请提出具体问题。 – Benjol 2011-03-04 12:02:40

回答

1

您需要使用的是XPath。假设你有一个DomDocument60对象XML文档,我们称之为d和你声明的变量IXMLDOMNodeList称为i然后使用此:

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

然后,您可以通过节点迭代中i和提取来自每个节点的text属性。

这里有一个相当小的程序来演示(你需要添加一个引用到“微软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 
+0

非常感谢你....它的工作...谢谢你 – LeenNew 2011-03-08 02:39:35