如何在Excel中使用VBA进行REST调用?

我试图按照这个例子: http : //libkod.info/officexml-CHP-9-SECT-5.shtml – Archive.org – Donate

但它给了这个错误

Imgur

在这一行上:

Dim objHTTP As New MSXML2.XMLHTTP

我试图使用这个例子: 我如何使用VBA从Excel发送HTTP POST请求到服务器?

但它给了这个错误:

Imgur

在这一行上:

Print objHTTP.Status 

那么如何在VBA中进行POST REST调用呢? 如何在VBA中进行PUT多部分/表单数据file uploadREST调用?

工具>参考

Imgur

 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"":""me@me.com"",""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/en-us/library/windows/desktop/aa384106( v=vs.85) .aspx

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

另外,避免使用后期绑定( CreateObject …)是个好主意。 更好地使用早期绑定( Dim objHTTP As New MSXML2.XMLHTTP ),因为早期绑定允许您使用Intellisense来列出成员并进行各种devise时validation。

我必须使用Debug.print而不是Print ,它在Immediate窗口中工作。

 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"":""me@me.com"",""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一起使用,但也可以与任何其他格式一起使用。