【问题标题】:Add attribute to IXMLDOMNode向 IXMLDOMNode 添加属性
【发布时间】:2020-05-14 19:11:47
【问题描述】:

我在以下代码的xNamedNodeMap.setNamedItem (myNode) 行中得到Run-time error 438: Object Doesnot support this propoerty or method

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】:

    去掉(myNode)的括号

    xNamedNodeMap.setNamedItem myNode
    

    在调用方法时不应使用括号,除非该方法返回一个值(并且您希望将返回值分配给某物)。否则,() 会导致 VBA 评估包含的参数,并传入该评估的结果而不是(例如)myNode

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

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

    注意 - 使用 Call 时情况有所不同,但这里的一般建议是不要使用 Call...

    【讨论】:

    • 谢谢@TimWilliams。你是对的。括号是导致问题的原因。
    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2020-05-11
    • 2017-08-26
    • 2018-08-19
    相关资源
    最近更新 更多