VBAを使用してExcelからサーバーにHTTP POSTリクエストを送信するにはどうすればよいですか?
質問
ExcelスプレッドシートからHTTP POSTを実行するために必要なVBAコードは何ですか?
解決
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("")
または、HTTPリクエストをより細かく制御するために、 WinHttp.WinHttpRequest.5.1
28v = vs.85%29.aspx "rel =" noreferrer "> MSXML2.ServerXMLHTTP
。
他のヒント
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
注:
- 出力について... VBA関数を呼び出したのと同じセルに結果を返すことができるかどうかわかりません。上記の例では、結果はA2に書き込まれます。
- 入力について...特定のセルを変更したときに結果を更新する場合は、それらのセルがVBA関数の引数であることを確認してください。
- これは、VBAを持たないExcel for Mac 2008では機能しません。 Excel for Mac 2011でVBAが復活しました。
詳細については、" 使用に関する完全な概要をご覧ください。 ExcelからのWebサービス。"
ほとんどのバックエンドは生の投稿データを解析します。たとえば、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"の生の投稿データを読み取る必要があります。
MSXMLへの参照を追加することにより、VBAプロジェクトでServerXMLHTTPを使用できます。
- VBAエディターを開きます(通常はマクロを編集して)
- 利用可能なリファレンスのリストに移動
- Microsoft XMLの確認
- [OK]をクリックします。
ServerXMLHTTP MSDNドキュメントにはServerXMLHTTPのすべてのプロパティとメソッドに関する詳細。
要するに、基本的には次のように動作します:
- 接続するには、 open メソッドを呼び出しますリモートサーバーへ
- 送信を呼び出して送信しますリクエスト。
- responseXML で応答を読み取ります、 responseText 、 responseStream または responseBody
MSXMLライブラリを使用してからXMLHttpRequestオブジェクトを使用する前にこれを行いました。 http://scriptorium.serve-it.nl/view.php?sidを参照してください。 = 40