【问题标题】:Error from VB excel macro code - msxml3.dll -2146697211 The system cannot locate the resource specified来自 VB excel 宏代码的错误 - msxml3.dll -2146697211 系统找不到指定的资源
【发布时间】:2012-07-28 10:12:59
【问题描述】:

我在 VB 宏 (excel) 中使用 MSXML.HTTPRequest 对象与 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. 库安装问题。同样,它根本不应该工作,但事实并非如此。

【问题讨论】:

  • 在您不在现场时调试用户的 Internet 连接问题绝非易事。这确实是本地 LAN 管理员需要解决的问题。
  • -2146697211 是 0x800C0005。相关:stackoverflow.com/questions/4355896/…
  • @AndrewLeach - 我看过了。这是一个稍微不同的场景,但我正在尝试在客户端验证这一点。

标签: excel vba vbscript xmlhttprequest msxml


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 哦,我的...我害怕我的窗户坏了 =) 解决方案适用于 msxml 的 javascript 实现
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 2010-10-27
        • 2020-05-09
        • 2015-08-29
        相关资源
        最近更新 更多