0

我在使用 CreateObject 时遇到问题。它一直告诉我这是一个未声明的元素。我需要添加一些具体的参考吗?

excel等的参考资料已经在里面了,不要从MSDN获得更多信息。

Public Function BBANtoBIC(ByVal BBAN As String) As String
        Dim xd As Object
        xd = CreateObject("msxml2.domdocument.4.0")
        xd.Load("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
        Do While xd.readyState <> 4
            DoEvents()
        Loop
        BBANtoBIC = xd.Text
    End Function
4

2 回答 2

2

您的系统中可能未安装“msxml2.domdocument.4.0”。它是从 2001 年开始的。您可能应该使用“Msxml2.DOMDocument.6.0”。请参阅在 Internet Explorer 中使用正确版本的 MSXML

于 2013-10-07T13:12:07.060 回答
1

通读该函数,它所做的只是返回文档的文本。它对 xml 并没有真正做任何事情。因此,您可以将其替换为:

Public Function BBANtoBIC(ByVal BBAN As String) As String
    Using wc As New System.Net.WebClient()
        Return wc.DownloadString("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
    End Using
End Function

我只看到这可能不正确的两个原因。第一个是如果您计算 on xml 文档对象以确保您下载的内容确实是有效的、格式正确的 xml,在这种情况下,调用函数的位置附近应该有错误处理代码。第二个是如果DoEvents等待循环是为了程序响应而不是等待 xml 解析器......这也是非常糟糕的设计。以这种方式使用 DoEvents() 可能会产生副作用。如果只是等待 xml 解析器,那么新代码应该完全避免这种延迟。

如果您确实需要解析/验证 xml,那么 .Net 框架中至少内置了三种不同的方法来执行此操作,而无需依赖CreateObject(). 应该没有必要CreateObject()在.Net中使用。曾经

于 2013-10-07T13:16:58.813 回答