关于其余部分:尝试在VBA中发出HTTP请求时,出现”没有合适的对象就无效的方法”错误?

Getting “method not valid without suitable object” error when trying to make a HTTP request in VBA?

我尝试遵循以下示例:http://libkod.info/officexml-CHP-9-SECT-5.shtml-Archive.org-捐赠

但它给出了此错误

Imgur

在此行上的

1
Dim objHTTP As New MSXML2.XMLHTTP

我尝试使用以下示例:如何使用VBA从Excel向服务器发送HTTP POST请求?

但是它给出了这个错误:

Imgur

在此行上的

1
Print objHTTP.Status

那么如何在VBA中进行POST REST调用?如何在VBA中进行PUT多部分/表单数据文件上载REST调用?

工具>参考

Imgur

代码

1
2
3
4
5
6
7
8
9
10
11
Sub SendEmail()
    'Dim objHTTP As New MSXML2.XMLHTTP
    'Set objhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL ="http://localhost:8888/rest/mail/send"
    objHTTP.Open"POST", URL, False
    objHTTP.send ("{""key"":null,""from"":""[email protected]"",""to"":null,""cc"":null,""bcc"":null,""date"":null,""subject"":""My Subject"",""body"":null,""attachments"":null}")
    Print objHTTP.Status
    Print objHTTP.ResponseText
   
End Sub

参考

WinHttpRequest对象:http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa384106(v = vs.85).aspx


您可能尚未在VBA窗口的"工具/参考..."对话框中为Dim objHTTP As New MSXML2.XMLHTTP添加对Microsoft XML(任何版本)的引用。

此外,最好避免使用后期绑定(CreateObject ...);最好使用早期绑定(Dim objHTTP As New MSXML2.XMLHTTP),因为早期绑定使您可以使用Intellisense列出成员并进行各种设计时验证。


我必须使用Debug.print而不是Print,它可以在"即时"窗口中使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub SendEmail()
    'Dim objHTTP As New MSXML2.XMLHTTP
    'Set objHTTP = New MSXML2.XMLHTTP60
    'Dim objHTTP As New MSXML2.XMLHTTP60
    Dim objHTTP As New WinHttp.WinHttpRequest
    'Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    'Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL ="http://localhost:8888/rest/mail/send"
    objHTTP.Open"POST", URL, False
    objHTTP.setRequestHeader"Content-Type","application/json"
    objHTTP.send ("{""key"":null,""from"":""[email protected]"",""to"":null,""cc"":null,""bcc"":null,""date"":null,""subject"":""My Subject"",""body"":null,""attachments"":null}")
    Debug.Print objHTTP.Status
    Debug.Print objHTTP.ResponseText

End Sub


看看这个:

https://github.com/VBA-tools/VBA-Web

这是用于处理REST的高级库。它是OOP,适用于JSON,但也适用于任何其他格式。


要读取REST数据,至少应考虑Microsoft Power Query。您将无法写入数据。但是,您可以很好地读取数据。