Mit Access 2010 baut Microsoft das Webbrowser-Steuerelement direkt in Access ein und vereinfacht damit einiges gegenüber der Verwendung des entsprechenden ActiveX-Steuerelements. Dieser Beitrag stellt die Möglichkeiten dieses neuen Steuerelements vor und zeigt die Unterschiede zum bisher verwendeten ActiveX-Steuerelement auf.
Das Webbrowser-Steuerelement finden Sie nun neben den übrigen Steuerelementen im Ribbon unter Entwurf|Steuerelemente (s. Bild 1).
Bild 1: Einfügen des Webbrowser-Steuerelements
Nach dem Einfügen und dem Wechsel in die Formularansicht zeigt das Steuerelement erwartungsgemäß noch keine Internetseite, sondern eine entsprechende Fehlermeldung an (s. Bild 2). Aber woher sollte es auch wissen, welche Internetadresse es anzeigen soll
Bild 2: Das Steuerelement in der Formularansicht – noch ohne Füllung
Nun, das lässt sich ändern: Wir fügen einfach eine Tabelle namens tblWebseiten zur Datenbank hinzu, die lediglich die beiden Felder WebseiteID und Webseite enthält.
Tragen Sie einige Datensätze mit gültigen Internetadressen in diese Tabelle ein. Stellen Sie dann die Eigenschaft Datenherkunft des Formulars mit dem Webbrowser-Steuerelement auf diese Tabelle ein und weisen Sie der Eigenschaft Steuerelementinhalt des Webbrowser-Steuerelements den Namen des Tabellenfeldes Webseite zu.
Wie Bild 3 zeigt, liefert das Webbrowser-Steuerelement nun die gewünschten Webinhalte. Und das ist die erste tolle Neuerung des in Access integrierten Webbrowser-Steuerelements: Es lässt sich an ein Feld einer Datenherkunft binden. Das heißt, Sie können in einem Formular immer gleich die Internetseite zu einem in einem Feld gespeicherten Link anzeigen. Dieses Formular finden Sie in der Beispieldatenbank unter dem Namen frmWebbrowser_Gebunden.
Bild 4: Webbrowser-Steuerelement mit ungebundenem Textfeld zur Adresseingabe
Ungebundene Anzeige von Webseiten
Wenn Sie die Webseite ändern möchten, ohne das Webbrowser-Steuerelement an ein Feld einer Tabelle zu binden, sind ein paar zusätzliche Handgriffe nötig. In der Beispieldatenbank finden Sie ein fertiges Formular mit den folgenden Funktionen unter dem Namen frmWebbrowser_Ungebunden (s. Bild 4). Das Formular besitzt keine Datenherkunft und das Webbrowser-Steuerelement ist dementsprechend nicht an ein Feld gebunden.
Bild 3: Ein an ein Feld der Datenherkunft gebundenes Webbrowser-Steuerelement
Damit es trotzdem eine Internetseite anzeigt, würden wir seine Eigenschaft Value nun im ersten Anlauf mit der gewünschten Internetadresse füttern. Die folgende Anweisung schlägt jedoch fehl:
Forms!frmWebbrowser_Ungebunden.ctlWebbrowser.Value = "http://www.access-im-unternehmen.de"
Stattdessen müssen wir wie beim alten Webbrowser-ActiveX-Steuerelement vorgehen und zunächst eine Objektvariable mit dem Datentyp Webbrowser deklarieren:
Dim objWebbrowser As WebBrowser
Im Formularereignis Beim Laden weisen wir diesem Objekt einen Verweis auf die Object-Eigenschaft des Webbrowser-Steuerelements zu:
Private Sub Form_Load() Set objWebbrowser = Me!ctlWebbrowser.Object End Sub
Schließlich soll dieses eine Internetseite anzeigen. Dazu legen wir im Formular ein Textfeld namens txtWebseite und für dieses eine Prozedur für die Ereigniseigenschaft Nach Aktualisierung an:
Private Sub txtWebseite_AfterUpdate() objWebbrowser.Navigate2 Me!txtWebseite.Value End Sub
Wenn Sie nun in die Formularansicht wechseln, eine Internetseite in das Textfeld eintragen und die Eingabetaste betätigen, lädt das Webbrowser-Steuerelement die Internetseite ohne Probleme.
Nach diesem kleinen Ausflug begeben wir uns zurück zu den Möglichkeiten des reinen Access-Steuerelements – die Navigate2-Methode war jedoch wichtig, weil sonst kein Laden von Seiten ohne URL in einem gebundenen Feld möglich ist.
Fertig
Beim automatischen Laden von Internetseiten interessiert uns in vielen Fällen der Zeitpunkt, wann das Webbrowser-Steuerelement die Seite fertig geladen hat. Dies können wir wie früher mit dem soeben deklarierten Objekt objWebbrowser erledigen, wobei wir dessen Deklaration um das Schlüsselwort WithEvents erweitern müssen:
Dim WithEvents objWebbrowser As WebBrowser
Danach können Sie über die beiden Kombinationsfelder oben im Klassenmodul des Formulars zuerst das Objekt objWebbrowser und dann das Ereignis NavigateComplete2 auswählen. Der VBA-Editor legt dann automatisch eine Ereignisprozedur an, die wie folgt aussieht:
Private Sub ctlWebbrowser_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "Seite ''" & URL & "'' vollständig geladen" End Sub
Dies hat früher gereicht, um das vollständige Laden der angegebenen Seite zu registrieren. In Zeiten des Web 2.0 gelingt dies nicht mehr: Wenn Sie beispielsweise www.amazon.de aufrufen, werden gleich noch eine Reihe Frames geladen – und die lösen fast alle das Ereignis DocumentComplete aus. Welches also signalisiert mir, dass die eigentliche Seite geladen ist
Die Lösung ist einfach: Der Parameter pDisp entspricht jeweils einem Zeiger auf das IDispatch-Interface des Fensters oder Frames, in dem sich die geladene Seite befindet.
Es liefert also einen Verweis auf das Webbrowser-Objekt, wenn es sich um die Hauptseite handelt, oder einen Verweis auf das Frame-Objekt der Hauptseite (oder einer untergeordneten Seite), das die geladene Seite enthält.
Die für uns wichtige Erkenntnis ist: Wenn pDisp in DocumentComplete gleich dem Webbrowser-Objekt ist, wurde gerade das Laden der Hauptseite beendet. Die folgende Prozedur gibt eine Meldung aus, wenn die richtige Seite fertig geladen wurde:
Private Sub ctlWebbrowser_DocumentComplete(ByVal _ pDisp As Object, URL As Variant) If objWebbrowser Is pDisp Then MsgBox "Seite ''" & URL & "'' geladen." End If End Sub
URL auslesen
Auch wenn die angezeigte Internetadresse bekannt sein sollte, bietet die Eigenschaft LocationURL die Möglichkeit, die aktuelle URL auszulesen. Die obige Prozedur können Sie somit auch wie folgt gestalten:
Private Sub ctlWebbrowser_DocumentComplete( _ ByVal pDisp As Object, URL As Variant) If objWebbrowser Is pDisp Then MsgBox "Seite ''" & Me.ctlWebbrowser.LocationURL & "'' geladen." End If End Sub
Ereignisse des Webbrowser-Steuerelements
Das Steuerelement besitzt noch drei weitere Ereigniseigenschaften:
- Bei Vor Navigieren
- Bei Navigationsfehler
- Bei Fortschrittsänderung
Gegenüber den 16 Ereignisprozeduren des Originalsteuerelements scheint das etwas wenig zu sein, aber das ist kein Problem – Sie können ja über das oben erwähnte Element auf die übrigen Ereignisse zugreifen.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo