回答:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")
または、の代わりに使用WinHttp.WinHttpRequest.5.1
して、HTTPリクエストをより詳細に制御できますMSXML2.ServerXMLHTTP
。
objHTTP.responseText
。
ByRef
か。そのため、既定のメンバーを持たない型のオブジェクト変数でそれらを使用すると、実行時エラーが発生します。オブジェクトにそれらを使用しないデフォルトのメンバーを持って、実際のオブジェクトではなく、デフォルトのメンバーの値を渡します。
MacとWindowsの両方で動作させる必要がある場合は、QueryTablesを使用できます。
With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
.PostText = "origin_airport=MSN&destination_airport=ORD"
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
ノート:
詳細については、「ExcelからのWebサービスの使用」に関する私の完全な要約をご覧ください。
anwserに加え、トカゲのビル:
ほとんどのバックエンドは生の投稿データを解析します。たとえばPHPでは$_POST
、投稿データ内の個々の変数が格納される配列があります。この場合、追加のヘッダーを使用する必要があります"Content-type: application/x-www-form-urlencoded"
。
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")
それ以外の場合は、変数の生の投稿データを読み取る必要があります"$HTTP_RAW_POST_DATA"
。
ServerXMLHTTP
への参照を追加することにより、VBAプロジェクトで使用できますMSXML
。
- VBAエディターを開く(通常はマクロを編集して)
- 利用可能な参照のリストに移動します
- Microsoft XMLを確認する
- OKをクリックします。
ServerXMLHTTPのMSDNドキュメントは、 ServerXMLHTTPでのすべてのプロパティとメソッドについての完全な詳細を持っています。
要するに、基本的には次のように機能します。
- オープンコールメソッドをてリモートサーバーに接続します
- コール送信をてリクエストをします。
- 経由で応答を読む responseXML、responseText、responseStreamまたはresponseBodyを
他のユーザーの応答を完了するには:
このために、「WinHttp.WinHttpRequest.5.1」オブジェクトを作成しました。
VBAを使用してExcelからのいくつかのデータを含む投稿リクエストを送信します。
Dim LoginRequest As Object
Set LoginRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
LoginRequest.Open "POST", "http://...", False
LoginRequest.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
LoginRequest.send ("key1=value1&key2=value2")
VBAを使用してExcelからトークン認証付きのgetリクエストを送信します。
Dim TCRequestItem As Object
Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1")
TCRequestItem.Open "GET", "http://...", False
TCRequestItem.setRequestHeader "Content-Type", "application/xml"
TCRequestItem.setRequestHeader "Accept", "application/xml"
TCRequestItem.setRequestHeader "Authorization", "Bearer " & token
TCRequestItem.send
TCRequestItem Object
、次のように読むことができます。実行TCRequestItem.ResponseText
後TCRequestItem.send