2011-03-04 162 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