Frage

Was VBA-Code erforderlich, um einen HTTP-POST aus einer Excel-Tabelle durchführen?

War es hilfreich?

Lösung

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("")

Alternativ kann für eine größere Kontrolle über die HTTP-Anforderung können Sie WinHttp.WinHttpRequest.5.1 anstelle von MSXML2.ServerXMLHTTP .

Andere Tipps

Wenn Sie es brauchen auf Mac und Windows zu arbeiten, können Sie Querytables verwenden:

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

Weitere Informationen:

  • In Bezug auf Ausgabe ... Ich weiß nicht, ob es möglich ist, die Ergebnisse zu der gleichen Zelle zurückzugeben, die die VBA-Funktion aufgerufen. In dem obigen Beispiel wird das Ergebnis in A2 geschrieben.
  • Im Hinblick auf Eingabe ... Wenn Sie die Ergebnisse aktualisieren möchten, wenn Sie bestimmte Zellen ändern, stellen Sie sicher, dass diese Zellen das Argument für Ihre VBA-Funktion sind.
  • Dies wird nicht für Mac 2008 auf Excel arbeiten, die VBA nicht haben. Excel für Mac 2011 bekam VBA zurück.

Für weitere Informationen können Sie meine vollständige Übersicht über „ mit Web sehen Dienstleistungen von Excel . "

Neben der anwser von Bill the Lizard :

Die meisten der Backends analysieren die rohen Post-Daten. In PHP zum Beispiel wird ein Array $ _POST, in denen einzelne Variablen innerhalb der Post-Daten gespeichert werden müssen. In diesem Fall müssen Sie einen zusätzlichen Header verwenden "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")

Ansonsten haben Sie die rohen Post-Daten auf die Variable "$ HTTP_RAW_POST_DATA" zu lesen.

Sie können ServerXMLHTTP in einem VBA-Projekt verwenden, indem Sie einen Verweis auf MSXML hinzugefügt wird.

  1. Öffnen Sie den VBA-Editor (in der Regel durch ein Makro bearbeiten)
  2. Gehen Sie auf die Liste der verfügbaren Referenzen
  3. Überprüfen Sie Microsoft XML
  4. Klicken Sie auf OK.

(von Referenzierung MSXML innerhalb VBA-Projekte )

Die ServerXMLHTTP MSDN-Dokumentation hat Einzelheiten über alle Eigenschaften und Methoden der ServerXMLHTTP.

Kurz aber es funktioniert im Grunde wie folgt:

  1. Rufen Sie öffnen Methode zu verbinden auf den Remote-Server
  2. Rufen Sie senden die schicken Anfrage.
  3. Lesen Sie die Antwort über responseXML , response , response oder Response

Ich tat dies, bevor Sie die MSXML-Bibliothek und dann das XMLHttpRequest-Objekt. Siehe http://scriptorium.serve-it.nl/view.php?sid = 40

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top