我试着效仿这个例子:http://libkod.info/officexml-CHP-9-SECT-5.shtml - Archive.org - Donate
但它给出了这个错误
在这条线上:
Dim objHTTP As New MSXML2.XMLHTTP
我试着用这个例子:How can I send an HTTP POST request to a server from Excel using VBA?
但它给出了这个错误:
在这条线上:
Print objHTTP.Status
那么如何在VBA中进行POST REST调用?如何在VBA中进行PUT多部分/表单数据文件上载REST调用?
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/en-us/library/windows/desktop/aa384106(v=vs.85).aspx
您可能没有在VBA窗口的Tools / References ...对话框中为Microsoft XML
添加对Dim objHTTP As New MSXML2.XMLHTTP
(任何版本)的引用。
另外,避免使用后期绑定是个好主意(CreateObject
...);最好使用早期绑定(Dim objHTTP As New MSXML2.XMLHTTP
),因为早期绑定允许您使用Intellisense列出成员并进行各种设计时验证。
我不得不使用Debug.print
而不是Print
,它在立即窗口中工作。
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
对于读取REST数据,至少OData考虑Microsoft Power Query。您将无法写入数据。但是,您可以很好地读取数据。