从VBA解析XML不起作用

从VBA解析XML不起作用,xml,vba,excel,Xml,Vba,Excel,我正在尝试使用ExcelVBA解析xml文件。以下是我的xml文件的外观: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Environment> <Variable> <Name></Name> <Caption>T1</Caption> <Type>TEXT</Type&

我正在尝试使用ExcelVBA解析xml文件。以下是我的xml文件的外观:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Environment>
    <Variable>
        <Name></Name>
        <Caption>T1</Caption>
        <Type>TEXT</Type>
        <Value>V1</Value>
        <Description></Description>
    </Variable>
        <Variable>
        <Name></Name>
        <Caption>T2</Caption>
        <Type>TEXT</Type>
        <Value>V2</Value>
        <Description></Description>
    </Variable>
        <Variable>
        <Name></Name>
        <Caption>T3</Caption>
        <Type>TEXT</Type>
        <Value>V3</Value>
        <Description></Description>
    </Variable> <Variable>
        <Name></Name>
        <Caption>T4</Caption>
        <Type>TEXT</Type>
        <Value>V4</Value>
        <Description></Description>
    </Variable> <Variable>
        <Name></Name>
        <Caption>T5</Caption>
        <Type>TEXT</Type>
        <Value>V5</Value>
        <Description></Description>
    </Variable>
    </Variable> <Variable>
        <Name></Name>
        <Caption>T6</Caption>
        <Type>TEXT</Type>
        <Value>V6</Value>
        <Description></Description>
    </Variable>
</Environment>

但我无法成功地运行此程序。我使用的是Excel 2013,并参考了Microsoft XML 6.0。但在执行过程中什么也没有发生。我试图用on error语句捕捉错误,但它返回错误号0。谁能告诉我这里做错了什么。

只有在XML格式正确的情况下,XML解析器才能工作。否则,
oXMLDOMDocument.load
方法将失败

要检查这一点,您可以像这样使用
oXMLDOMDocument.parseError

Public Function ll()

 Dim oDoc As Object
 Set oDoc = CreateObject("MSXML2.DOMDocument")
 oDoc.Load "E:\web\cc.xml"

 Dim oErr As Object

 If oDoc.parseError.ErrorCode <> 0 Then
  Set oErr = oDoc.parseError
  Debug.Print oErr.reason
 End If

 Dim oVariables As Object
 Dim oVariable As Object
 Set oVariables = oDoc.SelectNodes("/Environment/Variable")
 For Each oVariable In oVariables
  Debug.Print oVariable.SelectNodes("Caption").Item(0).Text
  Debug.Print oVariable.SelectNodes("Type").Item(0).Text
 Next

End Function
公共函数ll()
作为对象的Dim-oDoc
设置oDoc=CreateObject(“MSXML2.DOMDocument”)
加载“E:\web\cc.xml”
作为对象的模糊oErr
如果oDoc.parseError.ErrorCode为0,则
设置oErr=oDoc.parseError
调试。打印oErr.reason
如果结束
作为对象的对象
可作为对象的
Set ovisiables=oDoc.SelectNodes(“/Environment/Variable”)
对于卵巢中的每个卵巢
调试。打印可编辑。选择节点(“标题”)。项(0)。文本
调试。打印可编辑。选择节点(“类型”)。项(0)。文本
下一个
端函数

请参阅:

只有在XML格式正确的情况下,XML解析器才能工作。否则,
oXMLDOMDocument.load
方法将失败

要检查这一点,您可以像这样使用
oXMLDOMDocument.parseError

Public Function ll()

 Dim oDoc As Object
 Set oDoc = CreateObject("MSXML2.DOMDocument")
 oDoc.Load "E:\web\cc.xml"

 Dim oErr As Object

 If oDoc.parseError.ErrorCode <> 0 Then
  Set oErr = oDoc.parseError
  Debug.Print oErr.reason
 End If

 Dim oVariables As Object
 Dim oVariable As Object
 Set oVariables = oDoc.SelectNodes("/Environment/Variable")
 For Each oVariable In oVariables
  Debug.Print oVariable.SelectNodes("Caption").Item(0).Text
  Debug.Print oVariable.SelectNodes("Type").Item(0).Text
 Next

End Function
公共函数ll()
作为对象的Dim-oDoc
设置oDoc=CreateObject(“MSXML2.DOMDocument”)
加载“E:\web\cc.xml”
作为对象的模糊oErr
如果oDoc.parseError.ErrorCode为0,则
设置oErr=oDoc.parseError
调试。打印oErr.reason
如果结束
作为对象的对象
可作为对象的
Set ovisiables=oDoc.SelectNodes(“/Environment/Variable”)
对于卵巢中的每个卵巢
调试。打印可编辑。选择节点(“标题”)。项(0)。文本
调试。打印可编辑。选择节点(“类型”)。项(0)。文本
下一个
端函数

请参阅:

XML格式不正确。在最后一个
变量
元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,
debug.print Variables.Count
将告诉您返回了多少节点
SelectNodes
),并查看发生了什么。XML格式不正确。在最后一个
变量
元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,
debug.print Variables.Count
将告诉您返回了多少节点
SelectNodes
),并查看发生了什么。XML格式不正确。在最后一个
变量
元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,
debug.print Variables.Count
将告诉您返回了多少节点
SelectNodes
),并查看发生了什么。