
Ich habe in Excel 2016 eine Excel-Tabelle erstellt, die WebService- und FilterXML-Formeln verwendet, um mit der API von Bing zu kommunizieren und Daten daraus zurückzuholen. Die Formeln funktionieren in Excel 2016 einwandfrei, aber wenn die Tabelle in älteren Versionen von Excel 2010 usw. geladen wird, wird ein #Name?-Fehler generiert und es werden keine Ergebnisse zurückgegeben. Ich glaube, das liegt daran, dass Webservice- und FilterXML-Formeln nicht mit älteren Versionen von Excel kompatibel sind.
Grundsätzlich sollte der Code:
Nehmen Sie einen API-Schlüssel aus Zelle C2 in einem Blatt namens Sheet2. Nehmen Sie den Startort aus Zelle C25 (dies ist variabel und kann vom Benutzer geändert werden). Nehmen Sie den Endort aus Zelle D25 (dies ist eine Variable und kann vom Benutzer geändert werden). Nehmen Sie das Transportmittel aus Zelle C27 (dies ist eine Variable und kann vom Benutzer geändert werden). Die URL sollte in C29 angezeigt werden (der aktuelle Code hierfür lautet: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(distance.url,"$1",C25),"$2",D25),"$3",travel.mode),"$k",bingmaps.key).
Dies erzeugt eine Antwort in Zelle C31 – also die Rohausgabe (hier wird derzeit WebService verwendet). Der Code lautet: =WEBSERVICE(C29) Dies erzeugt einen Statuscode in Zelle C32 – also 200 (hier wird derzeit =FILTERXML(C31,"//StatusCode[1]" verwendet)
=FILTERXML(C31,"//TravelDistance[1]") wird dann in Zelle C34 verwendet, um die Reisedistanz von C31 zu übernehmen. =FILTERXML(C31,"//TravelDuration[1]") wird dann in Zelle C35 verwendet, um die Dauer von C31 in Minuten anzuzeigen.
Danke.
Antwort1
Oh je, ich würde vermuten, dass es einfacher sein könnte, einfach die alten Clients zu aktualisieren, als zu versuchen, dies zuverlässig in älteren Excel-Versionen zu implementieren. Ich erinnere mich, dass ich das IE-Objekt vor einigen Jahren in VBA verwendet habe. Es war nicht sehr stabil, aber damals habe ich eine ganze Site geladen und nicht nur einen HTTP-Get-Aufruf.
Für ausführlichere Informationen schauen Sie hier vorbei.https://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010
Ein einfacherer Hack, den ich kürzlich angewandt habe, bestand darin, Webdaten direkt als Webdatenquelle in Excel zu ziehen (Daten > Aus dem Web). Ich habe die gesamte HTML-Antwort aus einem Twitter-Feed direkt in ein leeres Blatt kopiert und dann Such- und Nachschlageformeln verwendet, um die gewünschte Datenzeile und -spalte zu finden. Ich möchte daran erinnern, dass ich nach einer Datenaktualisierung sogar automatisch einen Assistenten zum „Text in Spalten“ ausführen konnte. Dies alles wurde ohne VBA erledigt, sodass keine XLSM-Dateien erforderlich waren und die Leute keine Angst hatten, Makros zu aktivieren.
Ps. Ich habe jetzt versucht, dasselbe Blatt auf meinem aktuellen Computer (Windows 10, Office 2016) statt auf dem alten (Windows 7, Office 2010 oder 13?) zu öffnen. Es beschwert sich, dass JavaScript im Browser deaktiviert ist (von dem ich annehme, dass es intern immer noch ein Internet Explorer-Objekt und nicht Edge ist).