Ukázka kódu pro MS Excel
V následující ukázce je funkční kód pro MS Excel, který zajišťuje XML komunikaci se serverem pro předávání požadavků a získávání odpovědí, které je pak možné jiným kódem prezentovat v tabulce apod. Oproti předchozímu kódu pro OpenOffice, je kód pro MS Excel obsáhlejší a nejde o login, ale o propracovanější proceduru pro odesílání argumentem předaného XML uzlu s požadavkem, ověřování odpovědi a vracení opět již načteného XML do DOMu:
Public Function GetXMLFromServer(objReqNd As IXMLDOMElement) As IXMLDOMElement'odeslání požadavku na server; funkce pro komunikaci se serverem vrací kmenový uzel načteného DOMu;Dim objResDoc As New DOMDocument60Dim i As IntegermstrError = ""''--- Odeslání požadavku ---'připravíme dokument pro odesláníobjResDoc.async = FalsemstrLastRespStatus = "": mintLastRespStatus = 0'' - provedeme opakovaný pokus pro případ prázdného výsledkuFor i = 1 To 10'objektový druh serveru využívající odkaz solvemobjXhttp.Open "POST", FxnServerAddress + "/solve", False, mstrLogName, mstrLogPswmobjXhttp.setRequestHeader "Content-Type", "text/xml"'mobjXhttp.send objReqNd.XML'ověříme výsledekmintLastRespStatus = mobjXhttp.Status: mstrLastRespStatus = mobjXhttp.statusTextIf mintLastRespStatus <> 408 Then Exit ForNext'ověříme výsledek po ukončení cykluIf mintLastRespStatus <> 200 Then _Err.Raise 55, , "Chyba při HTTP komunikaci se serverem. Chyba č. " + CStr(mintLastRespStatus) + ", popis: " + _mstrLastRespStatus + vbCrLf + vbCrLf + "Požadavek: " + vbCrLf + Left(objReqNd.XML, 3000)''provedeme pokus o načtení vráceného XML a ověření jeho platnostiobjResDoc.loadXML mobjXhttp.ResponseTextIf objResDoc.parseError.errorCode <> 0 Then _Err.Raise "Chyba při načítání XML vráceného na požadavek <" + objReqNd.nodeName + "> ze serveru. " + vbCrLf + _"Důvod: " + objResDoc.parseError.reason + "" + vbCrLf + "Řádek: " + CStr(objResDoc.parseError.Line) + _", pozice: " + CStr(objResDoc.parseError.linepos) + vbCrLf + vbCrLf + "Response text: " + vbCrLf + _Left(mobjXhttp.ResponseText, 1000)''ověříme existenci uzlůIf IsNull(objResDoc.documentElement) Then _Err.Raise 55, , "Na požadavek <" + objReqNd.nodeName + "> server nevrátil platný obsah odpovědi." + vbCrLf + vbCrLf + "Obsah odpovědi:" + vbCrLf + Left(mobjXhttp.ResponseText, 1000)'If objResDoc.documentElement.childNodes.Length = 0 Then _Err.Raise 55, , "Na požadavek <" + objReqNd.nodeName + "> server nevrátil platný obsah odpovědi." + vbCrLf + vbCrLf + "Obsah odpovědi:" + vbCrLf + Left(mobjXhttp.ResponseText, 1000)''ověříme, zda potomkem není hlášení chybySet objErrElm = objResDoc.selectSingleNode("/response/error")If Not objErrElm Is Nothing Then _Err.Raise 55, , "Server vrátil hlášení o chybě č. " + objErrElm.GetAttribute("number") + "." + vbCrLf + vbCrLf + _"Server oznámil:" + vbCrLf + objErrElm.GetAttribute("detail")''nastavíme návratovou hodnotuSet GetXMLFromServer = objResDoc.documentElement'End Function

