Demo.ActiveX.mdb
In diesem fünften Teil der Beitragsreihe rund um das Thema Verweise geht es um ActiveX-Steuerelemente und die damit verbundenen Probleme. Neben einigen praktischen Hinweisen zeigt Ihnen dieser Beitrag, wann Sie ActiveX-Steuerelemente besser nicht einsetzen und wie Sie der “DLL-Hölle” entfliehen können.
Bevor wir uns mit den Problemen rund um Active-X-Steuerelemente beschäftigen, ist es wichtig, ein Verständnis dafür zu entwickeln, um was es bei ActiveX-Steuerelementen geht.
Was ist ein ActiveX
Bei ActiveX-Steuerelementen handelt es sich um Zusatzsteuerelemente, die nicht in Access eingebaut sind, sondern von Microsoft oder Dritten bereitgestellt werden. Ein Beispiel für ein von Microsoft zur Verfügung gestelltes ActiveX-Steuerelement ist das TreeView-Steuerelement, wohingegen beispielsweise das Adobe PDF Reader-Steuerelement über Dritte bezogen werden muss.
Mit den ActiveX-Steuerelementen hat Microsoft die Möglichkeit geschaffen, die Auswahl der eingebauten Steuerelemente zu erweitern. Ein ActiveX-Steuerelement kann etwa mit Visual Basic 6 erstellt werden. Wegen der Dateiendung .ocx sind ActiveX-Steuerelemente teilweise auch als OCXe bekannt. ActiveX-Steuerelemente werden in einer externen Bibliothek bereitgestellt und müssen, damit sie funktionieren können, im System registriert werden. Nach der Registrierung steht das Steuerelement dann systemweit zur Verfügung.
Ein ActiveX registrieren
Die Registrierung eines ActiveX-Steuerelements kann auf folgenden Wegen geschehen:
- über ein Setup,
- manuell aus Access heraus
- über die Eingabeaufforderung
- per VBA.
Häufig ist ein ActiveX-Steuerelement Bestandteil eines Softwarepakets. In einem solchen Fall wird die Registrierung im Rahmen des Setups der Software vorgenommen. Es gibt auch ActiveX-Steuerelemente, die über ein gesondertes Setup-Programm verfügen. Sie können ein ActiveX-Steuerelement auch manuell aus Access heraus registrieren. Dazu verwenden Sie den Menüpunkt Extras|ActiveX-Steuerelemente|Registrieren… im Formular- oder Berichtsentwurf (siehe Bild 1).
Bild 1: ActiveX-Steuerelemente mit Access registrieren
Sie haben auch die Möglichkeit, die Registrierung manuell über die Eingabeaufforderung vorzunehmen. Dazu verwenden Sie das Programm RegSvr32.exe. Der Aufruf lautet zum Beispiel wie folgt:
Regsvr32.exe C:\DeinPfad\DeinActiveX.ocx
Schlussendlich können Sie die Registrierung auch per VBA vornehmen. Dazu deklarieren Sie einen API-Aufruf. Dieser sieht beispielsweise wie folgt aus:
Declare Function DllRegisterServer Lib " C:\DeinPfad\DeinActiveX.ocx€ () As Long
Dieser Aufruf funktioniert mit jedem OCX, da einjedes die Funktion DllRegisterServer bereitstellt. Sie können die Registrierung per VBA auch durch das Ausführen der CMD-Befehlszeile mittels Shell-Befehl durchführen. Der Vorteil der Registrierung mittels API-Funktion liegt darin, dass Ihnen die API-Funktion über ihren Rückgabewert mitteilt, ob die Registrierung erfolgreich war.
Für Benutzer von Vista ist zu beachten, dass sie bei der Registrierung eines OCX als Administrator angemeldet sein müssen. Weitere Details finden Sie unter [1].
Praktische Hinweise
Bei der Verwendung von ActiveX-Steuerelementen gibt es einige Besonderheiten zu beachten. So wird beim Einfügen eines ActiveX-Steuerelements automatisch der zugehörige Verweis eingefügt. Dieses Verhalten können Sie ganz leicht nachvollziehen. Öffnen Sie dazu eine beliebige Datenbank. Wechseln Sie als Erstes in den VBA-Editor und prüfen Sie dort im Verweise-Dialog die aktiven Verweise.
Als Nächstes wechseln Sie zurück in die Access- Oberfläche. Öffnen Sie dort ein beliebiges Formular in der Entwurfsansicht. Fügen Sie nun ein ActiveX-Steuerelement ein. Dazu wählen Sie zum Beispiel das Adobe PDF Reader-Steuerelement aus. Wenn Sie jetzt im VBA-Editor den Verweis-Dialog erneut öffnen, werden Sie feststellen, dass Access den Verweis auf die Adobe Acrobat Library selbstständig eingefügt hat (siehe Bild 2).
Bild 2: Beim Einfügen eines ActiveX-Steuerelements wird automatisch ein Verweis eingefügt.
Sie werden sich jetzt vielleicht fragen, was so schlimm daran ist, dass Access diesen Verweis selbständig eingetragen hat. Schließlich wird Ihnen doch ein Stück Arbeit abgenommen. Das Gefährliche daran ist, dass Access diesen Verweis ohne Ihr Zutun erstellt und dass Sie keine Information darüber erhalten, dass überhaupt ein Verweis eingefügt wurde. Schließlich benötigen Sie den Verweis nicht unbedingt.