Jeg har sammensat et grundlæggende script til at sende en XML -streng eller fil til en webserver ved hjælp af Excel VBA og et simpelt PHP -script til at modtage dataene. Processen bruger XMLHTTP.
Målet er at oprette et simpelt upload -script til opdatering af en server med XML -data, der er oprettet fra et regneark. Derefter skal flere slutbruger -projektmapper tilknyttes den centrale fil og oprette rapporter fra den. De grundlæggende møtrikker og bolte:
I eksemplet bruger jeg en grundlæggende XML -streng, der ser sådan ud:
1234567891011 | myxml = "<? xml version =" "1.0" "?>" & _"" & _"herre polo" & _"4.89" & _"stor" & _"" |
Den PHP, jeg har brugt, returnerer ganske enkelt de data, den blev sendt tilbage til Excel. Så hvis du modtager de samme XML -data, som du sendte i en meddelelsesboks, har du gjort det korrekt. Hvis der ikke findes postdata, står der "ingen terninger". Placeringen af testwebadressen er /pl/xlxml.php
Det er klart, at du vil opdatere scriptet for at gemme filindholdet på din server til praktisk brug. Her er PHP'en til at modtage XML -postdataene og returnere dem:
1234567891011121314151617 |
Så vi ved nu, hvad vi sender, og hvordan vi får det, lad os sende XML -dataene!
Følgende kode blev oprettet i Excel 2003 og ved hjælp af en reference til Værktøjer-> Referencer-> Microsoft XML v5.0 i VB-editoren. Det er godt kommenteret, så du kan se alt, hvad der foregår:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | Sub SendXML ()'HTTP -variabelDim myHTTP som MSXML2.XMLHTTP'HTTP -objektIndstil myHTTP = CreateObject ("msxml2.xmlhttp")'opret dom dokumentvariabel'gemmer xml'en, der skal sendesDim myDom som MSXML2.DOMDocument'Opret DomDocument -objektetIndstil myDom = CreateObject ("MSXML2.DOMDocument")'Ilæg hele dokumentet, før du går videremyDom.async = Falsk'xml strengvariabel'erstat med placering, hvis du sender fra fil eller URLDim myxml som strengmyxml = "<? xml version =" "1.0" "?>" & _"" & _"herre polo" & _"4.89" & _"stor" & _""'indlæser xml'skift til .Load for fil eller urlmyDom.loadXML (myxml)'åbne forbindelsenmyHTTP.Åbn "indlæg", _"https://www.automateexcel.com/excel/pl/xlxml.php", Falsk'send XMLmyHTTP.Send (myDom.XML)'Vis svaretMsgBox myHTTP.ResponseTextAfslut Sub |
Hvis du har nået så langt, tilføjet en reference og kørt koden, vil du se, at PHP faktisk modtog og returnerede XML:
Bemærkninger: Jeg har kun dynamisk oprettet XML eller indlæst den fra XML -filer og URL'er. Næste er at sende data fra et XML -kort.
Jeg gentog dataene tilbage til Excel i stedet for at skrive dem til serveren, fordi URL'en er offentlig, jeg ville give folk en sandkasse og ikke have tilfældige filer sendt til min server.