运行时错误91:在CustomXMLnode上未设置对象变量

时间:2019-06-02 04:03:30

标签: vba

我正在尝试使用VBA从customXMLpart中读取一些customXMLnode,以在Microsoft word中填充一些内容控件。对于下面的代码示例,我只是在尝试调试此问题时打印即时窗口。

当我读取没有名称空间的customXMLpart内的customXMLnode时,我可以做到这一点而没有问题。但是,当尝试读取具有名称空间的customXMLpart中的节点时,在尝试输出到即时窗口的行上,我得到运行时错误91(未设置对象变量)(请参见下面的代码示例中的注释) )。我在此之前设置了一个断点以尝试解决此问题,它表明节点(在我的下面的代码中为cxn)设置为Nothing。我不确定自己在做什么错。

XML是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<People xmlns="people">
    <Person>
        <Name> bob </Name>
        <Street> Main St. </Street>
    </Person>
</People>`

VBA是:

Dim cxp1 As CustomXMLParts
Dim cxn As CustomXMLNode

' Returns all of the custom xml parts with the given namespace.
Set cxp1 = ActiveDocument.CustomXMLParts.SelectByNamespace("people")

' Get the node matching the XPath expression.
Set cxn = cxp1(1).SelectSingleNode("/People/Person/Name")
'executing the line below gives me run-time error 91 (object variable not 
'set). And cxn shows that it is set to Nothing.  
Debug.Print cxn.Text

我基本上是从Microsoft网站https://docs.microsoft.com/en-us/office/vba/api/office.customxmlparts.selectbynamespace获得此代码的,并对我的特定XML进行了一些细微更改。

我认为我有正确的Dim和Set语句,因此不清楚为什么会出现此错误。我知道XML很好,因为使用VBA时,如果没有命名空间,我可以读取XML,如下所示:

Dim parts As CustomXMLParts
Dim part As CustomXMLPart

Dim nodes As CustomXMLNodes
Dim node As CustomXMLNode

Set parts = ActiveDocument.CustomXMLParts

For Each part In parts

    If Len(part.NamespaceURI) = 0 Then
        Set node = part.SelectSingleNode("/People/Person/Name")
        debug.Print = node.Text

任何建议都非常感谢!

0 个答案:

没有答案