为IXMLDOMNode添加属性。

问题描述 投票:0回答:1

我越来越 Run-time error 438: Object Doesnot support this propoerty or methodxNamedNodeMap.setNamedItem (myNode) 以下代码的一行。

Sub appendChild()
    Dim xDoc As MSXML2.DOMDocument60
        Set xDoc = New MSXML2.DOMDocument60
        xDoc.LoadXML ("<root><child/></root>")
    Dim myNode As MSXML2.IXMLDOMNode
       Set myNode = xDoc.createNode(2, "Sci-Fi", "")
    Dim xNamedNodeMap As MSXML2.IXMLDOMNamedNodeMap
    Set xNamedNodeMap = xDoc.DocumentElement.ChildNodes.Item(0).Attributes
    xNamedNodeMap.setNamedItem (myNode)
    Debug.Print xDoc.XML
End Sub

谁能帮我调试一下这个问题?

vba msxml addattribute
1个回答
1
投票

去掉括号 (myNode)

xNamedNodeMap.setNamedItem myNode

当调用一个方法时,你不应该使用括号,除非该方法返回一个值(并且你希望将返回值分配给某个东西)。 否则, () 导致VBA 评价 的参数,并将该评价的结果传递进来,而不是(例如) myNode

当你传递的参数被评估时,会发生什么,取决于它是什么类型的变量,如果它是一个对象,该对象是否有一个 default method/property.

没有默认方法属性的对象将引发运行时错误,就像你在代码中看到的那样。

注意 - 物是人非 Call 但一般的建议是不要使用 Call...

© www.soinside.com 2019 - 2024. All rights reserved.