如何在VBA Excel 2003中parsingXML?
我想通过VBAparsing一个通用的XML文件。 我想要做的是:提取xml节点的值,将它们写入XML文件并导出。
你知道任何实际上让我一次读取一个节点的库,对于我来说,可以用一个可以理解的文档来处理,还有一些例子,甚至是最小的。
至今:
Sub Go() Dim xmlDoc As MSXML2.DOMDocument Dim xmlElement As MSXML2.IXMLDOMElement Dim xmlNode As MSXML2.IXMLDOMElement Set xmlDoc = New MSXML2.DOMDocument xmlDoc.Load ("E:\cdCatalog.xml") Set xmlElement = xmlDoc.documentElement Set xmlNode = xmlElement.FirstChild parseNodes xmlElement, 1, 1 'parseNodes xmlNode, 1, 1 End Sub Sub parseNodes(node As MSXML2.IXMLDOMElement, i As Integer, j As Integer) Dim child As MSXML2.IXMLDOMNode 'result = node.baseName & " : " & node.Text result = node.nodeName Sheet1.Activate ' text if... Cells(i, j) = result j = j + 1 If (node.hasChildNodes) Then For Each child In node.childNodes i = i + 1 'MsgBox child.Text MsgBox TypeName(node.childNodes) parseNodes child, i, j Next End If End Sub
根据您的评论指定更新的问题:
你不能像这样在VBA中实例化对象,在Dim
语句中有一个参数。 尝试:
Dim gReader As XmlTextReader gReader = New XmlTextReader
另外,我build议你在这里阅读XmlTextReader
文档:
http://msdn.microsoft.com/en-us/library/1af7xa52.aspx
这些例子说明了如何使用XmlTextReader
。
编辑:据我粗略的互联网search可以告诉, XmlTextReader
是为.NET实现,但不是为VBA。
您可能要考虑使用DOM而不是XmlTextReader
。 我发现DOM相对容易使用。 缺点是非常大的XML文件是低效的。 除非你正在处理大文件,否则DOM应该适合你。
Dim xlmDoc As Object Set xlmDoc = CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.Load fileName