Skicka XML med XMLHTTP

Innehållsförteckning

Jag har satt ihop ett grundläggande skript för att skicka en XML -sträng eller fil till en webbserver med Excel VBA och ett enkelt PHP -skript för att ta emot data. Processen använder XMLHTTP.

Målet är att skapa ett enkelt uppladdningsskript för att uppdatera en server med XML -data som skapats från ett kalkylblad. Låt sedan flera slutanvändares arbetsböcker mappa till den centrala filen och skapa rapporter från den. De grundläggande muttrarna och bultarna:

I exemplet använder jag en grundläggande XML -sträng som ser ut så här:

1234567891011 myxml = "<? xml version =" "1.0" "?>" & _"" & _"herrpolo" & _"4.89" & _"stor" & _""

PHP jag har använt returnerar helt enkelt data som den skickades tillbaka till Excel. Så om du får samma XML -data som du skickade i en meddelanderuta har du gjort det korrekt. Om ingen postdata hittas står det "inga tärningar". Testadressens plats är /pl/xlxml.php

Uppenbarligen vill du uppdatera skriptet för att spara filinnehållet på din server för praktisk användning. Här är PHP för att ta emot XML -postdata och returnera den:

1234567891011121314151617

Så vi vet nu vad vi skickar och hur vi får det, låt oss skicka XML -data!

Följande kod skapades i Excel 2003 och med en referens till Verktyg-> Referenser-> Microsoft XML v5.0 i VB-redigeraren. Det är välkommenterat så att du kan se allt som händer:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 Sub SendXML ()'HTTP -variabelDim myHTTP som MSXML2.XMLHTTP'HTTP -objektStäll in myHTTP = CreateObject ("msxml2.xmlhttp")'skapa dom dokumentvariabel'lagrar xml som ska skickasDim myDom som MSXML2.DOMDocument'Skapa DomDocument -objektetStäll in myDom = CreateObject ("MSXML2.DOMDocument")'Ladda hela dokumentet innan du går vidaremyDom.async = Falskt'xml string variabel'ersätt med plats om du skickar från fil eller URLDim myxml som strängmyxml = "<? xml version =" "1.0" "?>" & _"" & _"herrpolo" & _"4.89" & _"stor" & _""'laddar xml'ändra till .Load for file or urlmyDom.loadXML (myxml)'öppna anslutningenmyHTTP.Öppna "inlägg", _"https://www.automateexcel.com/excel/pl/xlxml.php", Falskt'skicka XMLmyHTTP.Send (myDom.XML)'Visa svaretMsgBox myHTTP.ResponseTextAvsluta Sub

Om du har kommit så här långt, lagt till en referens och kört koden ser du att PHP verkligen mottog och returnerade XML:

Anmärkningar: Jag har bara dynamiskt skapat XML eller laddat den från XML -filer och URL: er, nästa är att skicka data från en XML -karta.

Jag ekade data tillbaka till Excel istället för att skriva det till servern eftersom webbadressen är offentlig, jag ville ge människor en sandlåda och inte ha slumpmässiga filer som skickas till min server.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave