19

私はこの例に従おうとしました: http://libkod.info/officexml-CHP-9-SECT-5.shtml - Archive.org -寄付

しかし、それはこのエラーを与えました

イムグル

この行で:

Dim objHTTP As New MSXML2.XMLHTTP

この例を使用しようとしました: VBA を使用して Excel からサーバーに HTTP POST 要求を送信するにはどうすればよいですか?

しかし、それはこのエラーを出しました:

イムグル

この行で:

Print objHTTP.Status

では、VBA で POST REST 呼び出しを行うにはどうすればよいでしょうか。VBA で PUT multi-part/form-data ファイル アップロード 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"":""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

4

4 に答える 4

15

おそらく、VBA ウィンドウの [ツール/参照...] ダイアログでMicrosoft XML(任意のバージョンの)への参照を追加していません。Dim objHTTP As New MSXML2.XMLHTTP

また、遅延バインディング ( CreateObject...) の使用を避けることをお勧めします。アーリー バインディング ( Dim objHTTP As New MSXML2.XMLHTTP) を使用することをお勧めします。アーリー バインディングを使用すると、Intellisense を使用してメンバーを一覧表示し、あらゆる種類の設計時の検証を行うことができるからです。

于 2013-10-23T22:51:08.157 に答える
14

イミディエイト ウィンドウで機能する の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"":""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
于 2013-10-23T23:36:27.027 に答える