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-捐赠
但它给出了此错误
在此行上的
:
1 | Dim objHTTP As New MSXML2.XMLHTTP |
我尝试使用以下示例:如何使用VBA从Excel向服务器发送HTTP POST请求?
但是它给出了这个错误:
在此行上的
:
1 | Print objHTTP.Status |
那么如何在VBA中进行POST REST调用?如何在VBA中进行PUT多部分/表单数据文件上载REST调用?
工具>参考
代码
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窗口的"工具/参考..."对话框中为
此外,最好避免使用后期绑定(
我必须使用
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。您将无法写入数据。但是,您可以很好地读取数据。