Ich wollte aus Excel auf einen Webservice zugreifen. Also kurz gegoogelt (oder gelived ), eigentlich gar nicht so schwer...
Aber wie so oft liegt der Teufel im Detail und es waren doch ein paar Kleinigkeiten zu beachten, deshalb hier nochmals der komplette Lösungsweg:
Zunächst habe ich einen WebService erstellt, zum Testen was ganz triviales, eigentlich das Webservice Template nur noch um den Parameter Name erweitert:
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () { } [WebMethod] public string HelloWorld(string Name) { return "Hello World " + Name; } }
Die URL um auf den Webservice mit ausgefülltem Parameter zuzugreifen lautet http://localhost:49408/WebSite2/Service.asmx/HelloWorld?Name=Test, jedoch funktioniert das standardmäßig noch nicht. Wir müssen erst noch in der web.config folgenden Eintrag hinzufügen:
<webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices>
Nun bekommen wir mit diesem Aufruf den XML-Response des Webservices direkt zurückgegeben. Nun wollen wir den Webservice aus VBA aufrufen.
Sub CallWebService() Dim MSXML As New MSXML2.DOMDocument Dim strAnfrage As String strAnfrage = "http://localhost:49408/WebSite2/Service.asmx/HelloWorld?Name=Test" With MSXML .async = False .preserveWhiteSpace = False .validateOnParse = True .resolveExternals = False End With If MSXML.Load(strAnfrage) = True Then Response = MSXML.DocumentElement.Text Else Response = "Fehler" End If End Sub
Remember Me
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.