Xml 未设置带块或带块的对象变量

Xml 未设置带块或带块的对象变量,xml,vba,excel,Xml,Vba,Excel,我有一个正在尝试解析的xml文件: 这是xml文件内容 捷进(吉米)有限公司 叶片转轮运输 格里菲斯父子公司 有时候,永远不会 硕士班 理查德 乔和恩 保罗 乔治 林戈 戴维斯的 列侬 麦卡特尼(3) 哈里森 St/ar 代码如下: Dim XDoc作为对象 设置XDoc=CreateObject(“MSXML2.DOMDocument”) XDoc.async=False:XDoc.validateOnParse=False 加载(ThisWorkbook.Path&“\test.xml”

我有一个正在尝试解析的xml文件:

这是xml文件内容


捷进(吉米)有限公司
叶片转轮运输
格里菲斯父子公司
有时候,永远不会
硕士班
理查德
乔和恩
保罗
乔治
林戈
戴维斯的
列侬
麦卡特尼(3)
哈里森
St/ar
代码如下:

Dim XDoc作为对象
设置XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False
加载(ThisWorkbook.Path&“\test.xml”)
'获取文档元素
Set lists=XDoc.DocumentElement
'遍历所有元素2个分支深
对于lists.ChildNodes中的每个listNode
对于listNode.ChildNodes中的每个fieldNode
Debug.Print“[”&fieldNode.BaseName&“]=[”&fieldNode.Text&“]
下一个字段节点
下一个列表节点
设置XDoc=Nothing
我正在获取对象变量,该行未设置块或块:

lists.ChildNodes中每个listNode的
您的代码对我来说运行良好。作为弗洛伦特。根据建议,文档可能无法解析。我怀疑他们的文件名有误。添加一些错误处理将有助于捕获这些错误

Sub-PrintXML()
将文件路径设置为字符串
作为对象的Dim XDoc
FilePath=thispoolk.Path&“\test.xml”
如果Len(Dir(FilePath))=0,则
MsgBox“未找到文件:”&vbCrLf&FilePath,vbCritical
出口接头
如果结束
设置XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False
Load(“C:\Users\norkiosk\Documents\Fax\test.xml”)
'获取文档元素
Set lists=XDoc.DocumentElement
如果列表什么都不是,那么
MsgBox“无法分析文件:”&vbCrLf&FilePath,vbCritical
出口接头
如果结束
'遍历所有元素2个分支深
对于lists.ChildNodes中的每个listNode
对于listNode.ChildNodes中的每个fieldNode
Debug.Print“[”&fieldNode.BaseName&“]=[”&fieldNode.Text&“]
下一个字段节点
下一个列表节点
设置XDoc=Nothing
端接头

您的代码对我来说运行良好。作为弗洛伦特。根据建议,文档可能无法解析。我怀疑他们的文件名有误。添加一些错误处理将有助于捕获这些错误

Sub-PrintXML()
将文件路径设置为字符串
作为对象的Dim XDoc
FilePath=thispoolk.Path&“\test.xml”
如果Len(Dir(FilePath))=0,则
MsgBox“未找到文件:”&vbCrLf&FilePath,vbCritical
出口接头
如果结束
设置XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False
Load(“C:\Users\norkiosk\Documents\Fax\test.xml”)
'获取文档元素
Set lists=XDoc.DocumentElement
如果列表什么都不是,那么
MsgBox“无法分析文件:”&vbCrLf&FilePath,vbCritical
出口接头
如果结束
'遍历所有元素2个分支深
对于lists.ChildNodes中的每个listNode
对于listNode.ChildNodes中的每个fieldNode
Debug.Print“[”&fieldNode.BaseName&“]=[”&fieldNode.Text&“]
下一个字段节点
下一个列表节点
设置XDoc=Nothing
端接头

您的XML文件加载不正确

a) 我假设您的XML文件以类似
的内容开头,这样就可以将其标识为XML

b) 最好声明对象设置(始终在声明头中使用
Option Explicit
)。由于您使用的是所谓的后期绑定,因此只需编写以下内容即可:

Dim XDoc作为对象
将列表变暗为对象
将listNode设置为对象
Dim fieldNode作为对象
提示如果您使用
set XDoc=CreateObject(“MSXML2.DOMDocument”)
将XDoc对象设置为内存,通常您会得到一个较旧的版本(3.0),因此在大多数情况下,最好显式使用
set XDoc=CreateObject(“MSXML2.DOMDocument.6.0”)
,它会自动包含XPath。如果没有,您应按以下方式填写代码:

Set XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False

XDoc.setProperty“SelectionLanguage”,“XPath”您的XML文件加载不正确

a) 我假设您的XML文件以类似
的内容开头,这样就可以将其标识为XML

b) 最好声明对象设置(始终在声明头中使用
Option Explicit
)。由于您使用的是所谓的后期绑定,因此只需编写以下内容即可:

Dim XDoc作为对象
将列表变暗为对象
将listNode设置为对象
Dim fieldNode作为对象
提示如果您使用
set XDoc=CreateObject(“MSXML2.DOMDocument”)
将XDoc对象设置为内存,通常您会得到一个较旧的版本(3.0),因此在大多数情况下,最好显式使用
set XDoc=CreateObject(“MSXML2.DOMDocument.6.0”)
,它会自动包含XPath。如果没有,您应按以下方式填写代码:

Set XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False

XDoc.setProperty“SelectionLanguage”、“XPath”这是因为
XDoc.DocumentElement
没有返回任何内容,可能是因为
XDoc.Load
未能解析文件。请从xml文件中删除
MASTER/CLASS
St/ar
行,然后再试一次,因为xml文件的格式与符号“
”不同,是,需要作为
转义&列表在哪里声明为变量?键入?这是因为
XDoc.DocumentElement
未返回任何内容,可能是因为
XDoc.Load
未能解析文件。请从xml文件中删除
MASTER/CLASS
St/ar
行,然后重试xml文件的格式不正确,因为符号“
&
”是一个,需要作为
&列表在哪里声明为变量?打字?谢谢但是当我试着