Excel als Webbrowser |
Das Tabellenkalkulationsprogramm MS-Excel ist in den meisten Ingenieurbüros etabliert, und es gibt immer häufiger die Möglichkeit, für die Berechnung oder für sonstige Tätigkeiten benötigte Daten aus dem Internet zu beziehen. Greift man dabei regelmäßig auf die selben Datenbanken oder Internetseiten zu, kann es sich als sinnvoll erweisen, diesen Zugriff zu automatisieren. Dafür bietet die Software MS-Excel standardmäßig einige Möglichkeiten. Für die Fälle, die damit nicht abgedeckt werden, kann man sich mit VBA selbst helfen. Hier wird eine Möglichkeit vorgestellt, die das Control Microsoft-WebBrowser benutzt, um auf Internetseiten zuzugreifen und ihren Inhalt auszulesen.
Ziel des Beispieles: Automatisches Finden des FAQ-Links der Seite DIN1055.deIm Folgenden wird von der Codeumgebung einer Userform ausgegangen. Um von der Userform auf eine Webseite zuzugreifen und diese auch anzuzeigen, kann man das Control WebBrowser benutzen. Findet man es (innerhalb des VBE) nicht in der Symbolleiste "Werkzeugsammlung", so wird es dort durch Rechtsklick → "Zusätzliche Steuerelemente" → "Microsoft WebBrowser" hinzugefügt - siehe Abbildung: Ist das Control auf der Userform (möglichst groß) platziert, gestaltet sich das Anzeigen von Internetseiten äußerst einfach durch das Verwenden des Befehls "Navigate". Hierzu ein kleines Beispiel: Voraussetzung für alle Beispiele: Userform Userform1 mit WebBrowser (WebBrowser1) und CommandButton (Cmd_Aufruf) Option ExplicitSelbstverständlich muss die Internetadresse (URL) nicht fest im Code verankert werden, sondern kann zum Beispiel aus einer auf der Userform platzierten Textbox ausgelesen werden. So hat der Benutzer die Möglichkeit, die Adresse selbst einzugeben (und man hat schon fast den Internetexplorer nachgebaut ;-) ). Etwas schwieriger wird es, wenn man nicht nur die Seite anzeigen will, sondern einzelne (bestimmte) Daten aus der Webseite automatisiert auslesen möchte. Das Problem lässt sich grundsätzlich in zwei Teile aufteilen:
1. Wenden wir uns der ersten Hürde zu:Wir haben ja bereits eine Seite angezeigt, doch das Laden von Internetseiten benötigt Zeit. Bei der automatisierten Verarbeitung der Seite stellt sich daher die Frage, wann denn die Seite komplett geladen ist und damit auch die alle Informationen der Seite zur Verfügung stehen. Das Control WebBrowser bringt das Ereignis "DocumentComplete" mit sich. Es wird ausgelöst, wenn der WebBrowser mit dem Laden der Seite fertig ist. Eine mögliche Strategie besteht darin, so lange mit der Weiterführung des Codes zu warten, bis das Ereignis "DocumentComplete" ausgeführt wird. Programmiertechnisch kann man das umsetzen, indem man mit einer Variable arbeitet, die "protokolliert", ob der WebBrowser gerade am Laden oder bereits fertig ist. Dazu wird die öffentlich deklarierte Variable blnLoad verwendet. Ablauf ist nun folgender:
Option Explicit 2. Das Auslesen der gesuchten Information:Hier gibt es mannigfaltige Möglichkeiten. Wer mit RegularExpressions umgehen kann, wird sich die Information schnell aus dem html-Quelltext holen. Wer auf html-Tabellen zugreift wird bemerken, dass man auf diese fast so wie auf Excel-Tabellenblätter zugreifen kann (siehe u.a. VBA-Code des Schneelastrechners). Da diese Frage so allgemein ist, möchten wir hier als Beispiel eine Möglichkeit zeigen, wie man an den angezeigten Text der Seite heran kommt, ihn in einer Datei speichert und wie man auf den html-Quelltext der Seite zugreifen kann: Option Explicit Das Aufrufen und Anzeigen von Internetseiten ist also sehr einfach. Will man bestimmte Informationen auslesen, wird es etwas schwieriger. Hat man jedoch eine persönliche Strategie gefunden, wie man aus dem Text/Quelltext der Seiten die Informationen extrahiert, ist eine automatisierte Webabfrage schnell gemacht. Anmerkungen / Einschränkungen: MS-Excel muss für alle Codes auf das Internet zugreifen, evtl. müssen entsprechende Einstellungen in den Firewalls und ähnlichem getroffen werden. Das Control "Webbrowser" verhält sich sehr ähnlich wie der MS-Internet-Explorer. Daher lassen sich bestehende Codes für den MS-InternetExplorer meist leicht auf das WebBrowser-Control adaptieren. Autor: Florian Schmidt
» Keine Kommentare
Es gibt bisher noch keine Kommentare.
» Kommentar schreiben
Nur registrierte Benutzer können Kommentare schreiben. Bitte melden Sie sich an oder registrieren Sie sich ('Anmelden' im Hauptmenü).
|
< zurück | weiter > |
---|