为什么我在简单的 url 调用中会收到 "Argument is not optional" 错误?

Why do i get "Argument is not optional" error on simple url call?

我的目标是检查 VBA 中的互联网连接,但是当我尝试用 request.open 调用 url 时,我收到错误消息 "Argument is not optional"。

遗憾的是互联网研究没有任何结果。

这是我的代码:

On Error GoTo NoConnectionErrorHandling
    Dim Request As MSXML2.XMLHTTP60
    Request.Open "http://www.google.com"
    Request.send
    MsgBox Request.Status

它挂在所示代码的第三行。 我希望有人能帮助我,因为我在 VBA 方面的经验还很少。

您必须指定请求的类型。它可以是 "GET"、"POST" 或其他。

打开方法见这里: https://msdn.microsoft.com/en-us/library/ms757849(v=vs.85).aspx

这些是参数:

  • bstrMethod 用于打开连接的 HTTP 方法,例如 GET、POST、PUT 或 PROPFIND。对于 XMLHTTP,此参数不区分大小写。当 IXMLHTTPRequest 托管在浏览器中时,不允许使用动词 TRACE 和 TRACK。 What is the difference between POST and GET?

  • bstrUrl 所请求的URL。这可以是绝对值 URL,例如“http://Myserver/Mypath/Myfile.asp”,也可以是相对值 URL,例如“../MyPath/MyFile.asp”。

  • varAsync[可选]

  • bstrUser[可选]

  • bstr密码[可选]

如您所见,该方法至少需要两个参数(其他 3 个是可选的),因此 1 个是不够的。

您需要使用关键字 New 声明 Request。因此,类似下面的作品:

Public Sub TestMe()    
    Dim Request As New MSXML2.XMLHTTP60
    Request.Open "GET", "http://www.bbc.com"
    Request.send
    MsgBox Request.Status    
End Sub

每当您使用标准 VBA 库之外的库时,最好执行以下 2 项之一:

  • 为图书馆提供信息:

  • 使用后期绑定:

Dim Request As Object
Set Request = CreateObject("Msxml2.ServerXMLHTTP.6.0")