Erweitern der VBA-Entwicklungsumgebung

André Minhorst, Duisburg

Wer hat sich nicht schon einmal die eine oder andere, vielleicht ganz individuelle Erweiterung der Entwicklungsumgebung von Access gewünscht Klar, wie man sich einen Assistenten für bestimmte Aufgaben bastelt, ist in der Fachliteratur hinlänglich erklärt, aber den VBA-Editor mit zusätzlichen Funktionen versehen Dieser Beitrag zeigt, wie Sie mit etwas Fremdhilfe von VB eine .dll-Datei entwickeln, die viele Wünsche erfüllen kann.

Wahrscheinlich verfügt nicht jeder Leser dieses Beitrags über das Microsoft Visual Studio. Das hätte den Nachteil, dass er nicht selbst Lösungen wie diese oder ähnliche erstellen kann – was einerseits sehr schade ist, denn wer die hier vorgestellte Technik einmal kennt, der möchte vermutlich für einige immer wiederkehrende Aufgaben eine automatische Lösung erstellen. Andererseits kommen Sie auch als Nicht-Visual Studio-Anwender in den Genuss der hier vorgestellten Lösung, da diese als .dll-Datei auf der Heft-CD vorliegt.

DLL registrieren

Um die fertige DLL im VBA-Editor verwenden zu können, müssen Sie diese zunächst registrieren. Dazu kopieren Sie die DLL in einen Ordner Ihrer Wahl (am besten zu den anderen DLLs im Windows-Verzeichnis unter System32).

Anschließend rufen Sie im Ausführen-Dialog (Start ( Ausführen) die Anweisung regsvr32 mit dem kompletten Pfad der DLL als Parameter auf. Beim nächsten Start von Access und der VBA-Entwicklungsumgebung stehen die Funktionen dann zur Verfügung.

Hinweis

Die DLL arbeitet mit Access ab Version 2000 zusammen.

Nummerieren von Quellcode

Im Beitrag Professionelle Fehlerbehandlung in dieser Ausgabe von Access im Unternehmen finden Sie eine Fehlerbehandlung, die bei jedem aufgetretenen Fehler einen Eintrag in eine Datei vornimmt und dort die Fehlernummer, die Beschreibung, das Modul und die Prozedur, in der der Fehler auftritt, sowie die entsprechende Zeilennummer einträgt.

Dazu muss allerdings erst einmal eine Zeilennummer vorhanden sein; Access trägt diese nicht automatisch in eine Prozedur ein oder ermittelt diese wie andere Programmiersprachen. Wer schon einmal eine etwas umfangreichere Anwendung entwickelt hat, kann sich ungefähr vorstellen, wie viele Zeilen Code eine solche Anwendung enthält.

Der Aufwand, diese von Hand zu nummerieren, ist unverhältnismäßig groß. Hinzu kommt, dass – egal wie groß man die Abstände zwischen den einzelnen Zahlen wählt – garantiert irgendwann so viele Zeilen hinzukommen, dass man alles erneut nummerieren muss. Da kommt eine Funktion zum automatischen Nummerieren von Modulen doch gerade recht.

Wenn Sie die DLL ordnungsgemäß registriert haben, erscheint beim öffnen der VBA-Entwicklungsumgebung eine neue Menüleiste mit drei Schaltflächen (s. Abb. 1).

Abb. 1: Zeilen nummerieren per Knopfdruck

Abb. 2: Hinzufügen einer Fehlerbehandlung

Mit einem Klick auf die Schaltfläche Modul nummerieren fügen Sie dem aktuellen Modul eine Nummerierung hinzu. Um diese wieder zu entfernen, klicken Sie einfach auf die Schaltfläche Modul entnummerieren.

Hinzufügen einer Fehlerbehandlung

Fehlerbehandlungen haben immer das gleiche Grundgerüst. Der VBA-Editor bietet auch eine eingebaute Funktion an, um eine rudimentäre Fehlerbehandlung zu integrieren, aber um die im Beitrag Professionelle Fehlerbehandlung vorgestellte Fehlerbehandlung zu verwenden, bedarf es ein paar Zeilen mehr.

Um eine Fehlerbehandlung in eine beliebige Prozedur zu integrieren, öffnen Sie einfach das gewünschte Modul, platzieren die Einfügemarke über der entsprechenden Prozedur und klicken auf die Schaltfläche Fehlerbehandlung hinzufügen. Das Ergebnis sieht beispielsweise wie in Abb. 2 aus.

Nur den wenigsten Anwendern dürfte bekannt sein, dass man mit einem VB-Programm die Entwicklungsumgebung von Access, nachfolgend kurz VBA-Editor genannt, um eigene Funktionen erweitern kann. Das VB-Programm nistet sich – einmal registriert – an der gewünschten Stelle im VBA-Editor ein und stellt dort fortan seine Funktionen zur Verfügung. Im vorliegenden Fall sollen die entsprechenden Funktionen über eine spezielle Menüleiste aufgerufen werden.

Um die .dll-Datei zu erstellen, benötigen Sie – wie oben erwähnt – Microsoft Visual Studio 6.0. Nach dem Start des Visual Studios bietet es Ihnen verschiedene Möglichkeiten zum Erstellen eines neuen Projekts an. Wählen Sie dort den Eintrag ActiveX-DLL aus.

Das nun erscheinende Bild mag Access-Entwicklern teilweise bekannt vorkommen, da es prinzipiell die gleichen Elemente wie der VBA-Editor enthält. Der wesentliche Unterschied ist, dass die Benutzeroberfläche der zu erstellenden Anwendungen ebenfalls hier und nicht in einer separaten Umgebung wie unter Access erzeugt werden kann.

Damit Sie das Projekt später identifizieren können, stellen Sie nun einige Eigenschaften (Menüeintrag Projekt/Eigenschaften von Projekt1…) wie in Abb. 3 ein. Entfernen Sie dann das Klassenmodul Class1 aus dem Objektexplorer (zu aktivieren mit Strg + R). Anschließend speichern Sie das Projekt unter dem Namen VBAExtensions.

öffnen Sie nun den Dialog Komponenten (Menüeintrag Projekt/Komponenten) und aktivieren Sie auf der Registerseite Designer den Eintrag Addin Class.

Abb. 3: Eigenschaften des neuen Projekts

Abb. 4: Einstellungen des AddInDesigners

Abb. 5: Die letzten beiden Referenzen

Falls dadurch nicht automatisch eine neue Addin Class zu dem Projekt hinzugefügt wird, holen Sie das nach: Wählen Sie aus dem Kontextmenü des Eintrags VBAExtensions (VBAExtensions.vbp) im Projektexplorer den Eintrag Hinzufügen ( Addin Class aus.

Neben dem neuen Eintrag im Projektexplorer erscheint ein Dialog mit den Eigenschaften der neuen AddIn-Klasse. Ergänzen Sie die Eigenschaften wie in Abb. 4.

Stellen Sie außerdem im Eigenschaftsfenster des AddIn den Wert der Eigenschaft Public auf True ein. Die nachfolgende Meldung können Sie getrost bejahen.

Anschließend geben Sie dem Projekt noch die benötigten Referenzen mit auf den Weg. Im vorliegenden Fall benötigen Sie eine Referenz auf die Microsoft Office x.0 Object Library in der Version, die auf dem Zielrechner zum Einsatz kommt, sowie die Bibliothek Microsoft Visual Basic for Applications Extensibility 5.3 (s. Abb. 5).

Hinweis

Nachfolgend verwenden wir das Objektmodell des Microsoft Office Visual Basic Editors. Detaillierte Informationen finden Sie unter folgender Internetadresse (ohne Zeilenumbrüche): http://msdn.microsoft.com/library/default.aspurl=/library/en-us/dnofftalk/html/office07042002.asp

Schließlich fügen Sie dem Projekt noch ein neues Modul hinzu, das lediglich eine Zeile enthält:

Public oVBE As VBIDE.VBE

Damit setzen Sie eine Referenz auf das oberste Objekt des entsprechenden Objektmodells und können darüber auf die Elemente des VBA-Editors zugreifen.

Um die DLL zu testen, folgt nun der übliche „Hello World“-Test. öffnen Sie das Modul des AddInDesigner1 per Kontextmenü (Eintrag Code anzeigen). Wählen Sie aus dem linken Kombinationsfeld den Eintrag AddinInstance aus und es erscheint automatisch eine Ereignisprozedur, die Sie wie in Quellcode 1 ergänzen.

Private Sub AddinInstance_OnConnection(ByVal Application As Object, _    ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _    ByVal AddInInst As Object, custom() As Variant)
    Set objVBAIDE = Application
    MsgBox "Hello World"
End Sub

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar