J'ai essayé de suivre cet exemple: http://libkod.info/officexml-CHP-9-SECT-5.shtml – Archive.org – Dons
mais cela a donné cette erreur
sur cette ligne:
Dim obJHTTP comme nouveau MSXML2.XMLHTTP
J'ai essayé d'utiliser cet exemple: Comment puis-je envoyer une request POST HTTP à un server à partir d'Excel à l'aide de VBA?
mais cela a donné cette erreur:
sur cette ligne:
Print objHTTP.Status
Alors, comment faire un appel POST REST en VBA? Comment puis-je faire un file PUT multi-partie / file de données download REST appel dans VBA?
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
Sub SendEmail ()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
'Dim objHTTP comme nouveau MSXML2.XMLHTTPSub 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
'Set objhttp = CreateObject ("WinHttp.WinHttpRequest.5.1")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
Définir objHTTP = CreateObject ("MSXML2.ServerXMLHTTP")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
URL = "http: // localhost: 8888 / rest / mail / send"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
objHTTP.Open "POST", URL, FauxSub 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
objHTTP.send ("{" "key" ": null," "de" ":" "[email protected]" "," "à" ": null" "cc" ": null", "bcc" ": null", "date" ": null" "subject" ":" "My Subject" "," body "": null "," attachments "": null} ")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
Imprimer ObjHTTP.StatusSub 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
Imprimer ObJHTTP.ResponseTextSub 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
Objet WinHttpRequest: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106(v=vs.85).aspx
Vous n'avez probablement pas ajouté une reference à Microsoft XML
(toute version) pour Dim objHTTP As New MSXML2.XMLHTTP
dans la boîte de dialog devises / Références … de la window VBA.
En outre, il est judicieux d'éviter d'utiliser la binding tardive ( CreateObject
…); Il est préférable d'utiliser la binding anticipée ( Dim objHTTP As New MSXML2.XMLHTTP
), car une binding anticipée vous permet d'utiliser Intellisense pour répertorier les membres et effectuer toutes sortes de validation du time de design.
J'ai dû utiliser Debug.print
au lieu de Print
, qui fonctionne dans la window immédiate.
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
Sub SendEmail ()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
'Dim objHTTP comme nouveau MSXML2.XMLHTTPSub 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
'Set objHTTP = Nouveau MSXML2.XMLHTTP60Sub 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
'Dim obJHTTP comme nouveau MSXML2.XMLHTTP60Sub 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
Dim obJHTTP comme nouveau WinHttp.WinHttpRequestSub 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
'Définir objHTTP = CreateObject ("WinHttp.WinHttpRequest.5.1")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
'Définir objHTTP = CreateObject ("MSXML2.ServerXMLHTTP")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
URL = "http: // localhost: 8888 / rest / mail / send"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
objHTTP.Open "POST", URL, FauxSub 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
objHTTP.setRequestHeader "Content-Type", "application / json"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
objHTTP.send ("{" "key" ": null," "de" ":" "[email protected]" "," "à" ": null" "cc" ": null", "bcc" ": null", "date" ": null" "subject" ":" "My Subject" "," body "": null "," attachments "": null} ")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
Debug.Print objHTTP.StatusSub 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
Debug.Print objHTTP.ResponseTextSub 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
Regardez celui-ci:
https://github.com/VBA-tools/VBA-Web
C'est une bibliothèque de haut niveau pour traiter le REST. C'est OOP, travaille avec JSON, mais fonctionne également avec n'importe quel autre format.