1

我正在使用MSXML.HTTPRequestVB 宏 (excel) 中的对象与 HTTP 服务器进行通信。问题是它间歇性地抛出以下错误。

msxml3.dll -2146697211 系统找不到指定的资源。

我在我的系统上注意到这发生在网络关闭时,但我的客户抱怨它在他的机器上间歇性地发生。鉴于他的系统安装了 Windows 7 并且有时可以运行,我认为这不是未安装正确库的问题。他已经在几个网络上尝试过,但仍然失败。

Function xmlHTTPPost(strURL, strData)
    Dim objHttp

    On Error Resume Next
    xmlHTTPPost = ""
    Set objHttp = CreateObject("Microsoft.XMLHTTP")
    If Err.Number <> 0 Then
        Err.Clear
        Set objHttp = CreateObject("MSXML2.XMLHTTP")
    End If
    If Err.Number <> 0 Then
        MsgBox "Error creating XMLHTTP object"
        Err.Clear
        Exit Function
    End If
    objHttp.Open "GET", strURL, False
    If Err.Number <> 0 Then
        Err.Clear
        Set objHttp = Nothing
        Exit Function
    End If
    objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objHttp.setRequestHeader "User-Agent", "Mozilla Compatible (MS IE 3.01 WinNT)"
    objHttp.Send
    If Err.Number <> 0 Then
        MsgBox "Error " & Hex(Err.number) & " sending to server:" & vbCrLf & Err.description
        xmlHTTPPost = "ERROR: " & Err.Source & " " & Err.Number & " " & Err.Description
        Err.Clear
    Else
        xmlHTTPPost = objHttp.responseText
    End If
    Set objHttp = Nothing
End Function

它在我的盒子上运行良好,这是一个 Windows 7 + Microsoft Office 2007 安装。

我在网上查了很多,模糊地提到了两个原因。

  1. 由于代理或防火墙导致的网络问题。在这种情况下,它不应该连接,而不是间歇性连接。
  2. 库安装问题。同样,它根本不应该工作,但事实并非如此。
4

4 回答 4

3

现在我可以通过将方法从 GET 更改为 POST 来解决这个问题。该错误是间歇性的,但幸运的是它开始出现在我的开发机器上一次,并且将 HTTP 方法更改为 POST 就可以了。虽然这很奇怪,但它确实有效。

于 2012-07-31T13:18:54.673 回答
1

我有时也会在我的服务器上得到这个。一旦我重新启动服务器,它就会开始正常工作,但又会间歇性地失败。我又不得不重新开始。错误消息是随机的和间歇性的。

于 2012-08-27T08:37:13.933 回答
1

FWIW,我得到了同样的错误。结果(最终)证明,XML 文件中存在错误。愚蠢的我,我原以为微软会提供更有意义的错误消息。如果您收到此错误,请尝试使用众多可用的 XML 检查程序之一。

于 2016-02-22T02:07:24.253 回答
0

使用 MSXML v6.0,MSXML v3.0 不再随 Office 或 Windows 一起分发。v6.0 仅随 Windows 7 一起分发。但 office 2010+ 不再附带任何版本的 MSXML。这解释了您的问题的原因。

维基百科中也有描述:http ://en.wikipedia.org/wiki/MSXML

于 2012-08-27T11:38:07.973 回答