更新资料
下面介绍的过程提供了一个使用XML DOM对象使用VBA解析XML的示例。代码基于XML DOM的初学者指南。
Public Sub LoadDocument()
Dim xDoc As MSXML.DOMDocument
Set xDoc = New MSXML.DOMDocument
xDoc.validateOnParse = False
If xDoc.Load("C:\My Documents\sample.xml") Then
DisplayNode xDoc.childNodes, 0
Else
End If
End Sub
Public Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _
ByVal Indent As Integer)
Dim xNode As MSXML.IXMLDOMNode
Indent = Indent + 2
For Each xNode In Nodes
If xNode.nodeType = NODE_TEXT Then
Debug.Print Space$(Indent) & xNode.parentNode.nodeName & _
":" & xNode.nodeValue
End If
If xNode.hasChildNodes Then
DisplayNode xNode.childNodes, Indent
End If
Next xNode
End Sub
Nota Bene-这个最初的答案显示了我能想到的最简单的事情(当时我正在研究一个非常具体的问题)。自然地,使用内置在VBA XML Dom中的XML工具会更好。请参阅上面的更新。
原始回应
我知道这是一篇很老的文章,但是我想分享我对这个复杂问题的简单解决方案。最初,我使用基本的字符串函数来访问xml数据。
假设您已经在VBA函数中返回了一些xml数据(在temp变量中)。有趣的是,还可以看到我如何链接到xml Web服务以检索值。图像中显示的函数也需要一个查找值,因为可以使用= FunctionName(value1,value2)从单元格中访问此Excel VBA函数,以通过Web服务将值返回到电子表格中。
openTag = ""
closeTag = ""
startPos = InStr(1, temp, openTag)
endPos = InStr(1, temp, closeTag)
startTagPos = InStr(startPos, temp, ">") + 1
Data = Mid(temp, startTagPos, endPos - startTagPos)