VB excel宏代码出错 - msxml3.dll -2146697211系统找不到指定的资源

时间:2012-07-30 17:38:44

标签: vba excel-vba msxml xmlhttprequest excel

我在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. 图书馆安装问题。同样,它根本不应该工作,但事实并非如此。
  3. 我真的很感激任何帮助。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我有时也会在我的服务器中获取此信息。一旦我重新启动服务器,它就会开始正常工作并再次间歇性地失败。我不得不重新启动。错误消息是随机和间歇性的。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

维基百科也对其进行了描述:http://en.wikipedia.org/wiki/MSXML