excel vba rest excel-vba

excel - ¿Obtiene el error "método no válido sin objeto adecuado" al intentar realizar una solicitud HTTP en VBA?



rest excel-vba (4)

Echa un vistazo a este:

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

Es una biblioteca de alto nivel para tratar con REST. Es OOP, funciona con JSON, pero también funciona con cualquier otro formato.

Intenté seguir este ejemplo: http://libkod.info/officexml-CHP-9-SECT-5.shtml - Archive.org - Donate

pero dio este error

en esta linea:

Dim objHTTP As New MSXML2.XMLHTTP

Intenté usar este ejemplo: ¿Cómo puedo enviar una solicitud HTTP POST a un servidor desde Excel usando VBA?

pero dio este error:

en esta linea:

Print objHTTP.Status

Entonces, ¿cómo hago una llamada POST REST en VBA? ¿Cómo hago una llamada REST de carga de archivos de datos de varias partes / formulario PUT en VBA?

Herramientas> Referencias

Código

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

Referencia

Objeto WinHttpRequest: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106(v=vs.85).aspx


Para leer datos REST, al menos OData Considere Microsoft Power Query. No podrás escribir datos. Sin embargo, puedes leer los datos muy bien.


Probablemente no haya agregado una referencia a Microsoft XML (ninguna versión) para Dim objHTTP As New MSXML2.XMLHTTP en el cuadro de diálogo Herramientas / Referencias ... de la ventana de VBA.

Además, es una buena idea evitar el uso de enlaces tardíos ( CreateObject ...); es mejor usar el enlace temprano ( Dim objHTTP As New MSXML2.XMLHTTP ), ya que el enlace temprano le permite usar Intellisense para enumerar a los miembros y hacer todo tipo de validación en tiempo de diseño.


Tuve que usar Debug.print lugar de Print , que funciona en la ventana Inmediato.

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