Wollen Sie Access um Funktionen erweitern, stehen Sie vor der Entscheidung, ob Sie ein Access-Add-In oder ein COM-Add-In bauen. Ersteres ist dem Access-Entwickler natürlich lieber, weil er sich nicht auf ungewohntes Terrain begeben muss. Wir zeigen am Beispiel eines Steuerelement-Rename-Tools, was Sie beim Bau eines Access-Add-Ins beachten müssen.
Ein Access-Add-In ist in erster Instanz eine herkömmliche Access-Datenbank, die allerdings einige Besonderheiten aufweist. Als Erstes wäre da die Tatsache zu nennen, dass sie natürlich nicht allein, sondern immer in Zusammenhang mit einer anderen Access-Anwendung geöffnet wird – immerhin soll das Add-In ja bei der Entwicklung einer Anwendung helfen. Dazu müssen Sie einige Voraussetzungen erfüllen: Als Erstes benötigt die Add-In-Datenbank eine öffentliche Funktion in einem Standardmodul, welche zum Aufrufen des Add-Ins beziehungsweise der enthaltenen Funktion nötig ist.
Dabei gibt es zwei Möglichkeiten:
- Das Add-In besitzt eine Benutzeroberfläche in Form eines Formulars, das durch die öffentliche Funktion angezeigt wird, um dem Benutzer die Steuerung des Add-Ins zu ermöglichen.
- Das Add-In besitzt keine Benutzeroberfläche, sondern soll ausschließlich VBA-Code auslösen, der eine bestimmte Aufgabe erledigt. Diesen bringt man dann entweder direkt in der öffentlichen Funktion unter oder ruft von dort aus entsprechende Routinen auf.
Registry
Damit ein Add-In beim Bearbeiten einer anderen Anwendung zur Verfügung steht, benötigen Sie ein paar Registry-Einträge. Bei einem Menü-Add-In, das man unter Access 2003 über den Menüeintrag Extras|Add-Ins öffnen möchte, liegen diese in der Registry im Pfad HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access\Menu Add-Ins (12.0 ersetzen Sie dabei durch die jeweilige Office-Version).
Dort benötigen Sie zunächst einen Schlüssel mit dem Namen des Add-Ins, zum Beispiel ControlRenamer. Unterhalb dieses Schlüssels legen Sie dann die folgenden Einträge des Typs Zeichenfolge an:
- Description: Beschreibung des Add-Ins
- Expression: Aufruf der öffentlichen Funktion in der Add-In-Datenbank, die das Add-In startet
- Library: Pfad und Name der Add-In-Datenbank
Zur Vereinfachung beim Anlegen eines Add-Ins hat Microsoft sich etwas einfallen lassen: Sie können die benötigten Informationen in einer Tabelle namens USysRegInfo unterbringen. Diese sieht wie in Bild 1 aus und hat eine Besonderheit: Tabellen, deren Name mit USys… beginnt, zeigt Access standardmäßig nicht an. Dies geschieht erst, wenn Sie die Anzeige ausgeblendeter Objekte aktivieren (unter Accesss 2003 und älter: Access-Optionen, Registerseite Ansicht, Eigenschaft Ausgeblendete Objekte, unter Access 2007: Rechtsklick auf den Kopf des Navigationsbereichs, Eintrag Navigationsoptionen, Option Ausgeblendete Objekte anzeigen).
Bild 1: Der Add-In-Manager liest diese Einträge aus und schreibt sie in die Registry.
Wenn Sie jetzt noch eine Funktion namens Autostart in einem Standardmodul anlegen, die wie folgt aussieht, können Sie das Add-In bereits registrieren:
Public Function Autostart() MsgBox "ControlRenamer" End Function
Dazu schließen Sie die Add-In-Datenbank und benennen sie in .mda (Access 2003 und älter) oder .accda (Access 2007) um, um den gängigen Konventionen zu entsprechen. Dann öffnen Sie eine beliebige Datenbank unter Access und rufen den Add-In-Manager auf (unter Access 2003 und älter: Extras|Add-Ins|Add-In-Manager, unter Access 2007: Ribboneintrag Datenbanktools|Add-Ins|Add-In-Manager). Dieser sieht wie in Bild 2 aus und zeigt nach einem Klick auf die Schaltfläche Hinzufügen… einen Datei öffnen-Dialog an. Wählen Sie hier die soeben erstellte Add-In-Datenbank aus und klicken Sie auf Öffnen.
Bild 2: Der Add-In-Manager von Access
Der Add-In-Manager zeigt daraufhin einen entsprechenden Eintrag in der Liste der Add-Ins an, wobei dieser im Gegensatz zu den anderen möglicherweise schon vorhandenen Add-Ins nicht durch ein x markiert ist. Dies ist jedoch kein Grund zur Sorge: Beim nächsten Öffnen des Add-In-Managers ist auch dieser Eintrag entsprechend markiert.
Außerdem sollte auch das über den Add-Ins-Menüeintrag zu öffnende Menü den Namen des neuen Add-Ins anzeigen. Mit einem Klick auf dieses lösen Sie es aus und zeigen so das in obiger Routine programmierte Meldungsfenster an.
Was ist geschehen
Der Add-In-Manager hat nun zweierlei Dinge erledigt:
- Er hat die Add-In-Datei an den in der Tabelle angegebenen Ort kopiert, in diesem Fall |ACCDIR\ControlRenamer.accda. |ACCDIR entspricht hier dem Verzeichnis C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\Microsoft\AddIns\.
- Er hat außerdem die in der Tabelle USysRegInfo angegebenen Registry-Einträge vorgenommen.
Dadurch ruft Access beim Klick auf den Add-In-Eintrag nun jeweils die angegebene Funktion des neuen Add-Ins auf, das sich im Add-In-Verzeichnis des aktuellen Benutzers befindet.
Achtung, Falle!
Besonders wichtig ist das oben beschriebene Umkopieren der Add-In-Datenbank in das Add-In-Verzeichnis, wenn Sie nachträglich änderungen am Add-In vornehmen: Dies erledigen Sie dann entweder direkt mit der im Add-In-Verzeichnis gespeicherten Datenbank oder Sie bearbeiten die in einem Entwicklungs-Verzeichnis enthaltene Datenbank und kopieren die jeweils neue Version in das Add-In-Verzeichnis. Dabei leistet eine kleine Batch-Datei namens CopyToAddInsPath.bat mit folgendem Inhalt gute Dienste:
Copy "<Originalverzeichnis>\ControlRename.accda" "<Add-In-Verzeichnis>" /Y Pause
Hier müssen Sie noch die Platzhalter <Originalverzeichnis> und <Add-In-Verzeichnis> ersetzen. Die Option /Y sorgt dafür, dass eine bestehende Datei ohne Rückfrage überschrieben wird, der Befehl Pause lässt die Eingabeaufforderung geöffnet, damit Sie sich vom Erfolg der Aktion überzeugen können.
Feinheiten
Möglicherweise möchten Sie Ihr Add-In richtig rund machen – sodass es beispielsweise im Add-In-Manager einen entsprechenden Text für den Autor und die Beschreibung des Add-Ins anzeigt. Dies ist natürlich hilfreich, gerade wenn man mit mehreren Add-Ins arbeitet und mit einem Blick erfahren möchte, was ein bestimmtes Add-In für eine Aufgabe hat. Um die beiden in Bild 2 zu erkennenden Felder zu füllen, schließen Sie die Add-In-Datenbank und zeigen über das Kontextmenü ihres Eintrags im Windows Explorer ihr Eigenschaftsfenster an. Dort brauchen Sie nur die beiden Eigenschaften Autor und Kommentar mit den gewünschten Texten zu versehen – fertig!
Add-In entfernen
Zum Entfernen eines Add-Ins, etwa um es erneut sauber zu installieren, sind zwei Schritte nötig:
- Löschen der Registry-Einträge: Dies erledigen Sie, indem Sie das Add-In im Add-In-Manager markieren und auf Deinstallieren klicken.
- Entfernen der Add-In-Datenbank aus dem Add-In-Verzeichnis
Steuerelemente umbenennen
Kommen wir zur Aufgabe unseres Beispiel-Add-Ins: Wenn man ein Formular oder einen Bericht an eine Datenherkunft wie eine Tabelle oder Abfrage bindet und Elemente dieser Datenherkunft aus der Feldliste in den Entwurf zieht, legt Access automatisch Steuerelemente an, die im Wesentlichen zwei Eigenschaften aufweisen: den Namen des Feldes als Name des Steuerelements und gleichzeitig als Steuerelementinhalt. Für den Steuerelementinhalt ist dies okay, den Namen des Steuerelements möchte man aber vielleicht einer Namenskonvention anpassen. Diese könnte beispielsweise für verschiedene Steuerelemente bestimmte Präfixe verlangen:
- Textfeld: txt
- Kombinationsfeld: cbo
- Listenfeld: lst
- Kontrollkästchen: chk
Meist verzichten Entwickler darauf, gebundene Steuerelemente so umzubenennen, und behalten die Feldnamen als Steuerelementnamen bei. Unser Add-In soll die gebundenen Steuerelemente eines Formulars automatisch umbenennen.
Wie aber geschieht dies am einfachsten Immerhin sollte der Benutzer noch ein wenig Kontrolle darüber behalten, wie seine Steuerelemente später heißen. Grundsätzlich macht das geplante Add-In natürlich am meisten Sinn, wenn man es direkt nach dem Erstellen der Steuerelemente einsetzt und nicht erst nach dem Hinzufügen von Ereignisprozeduren, die durch die betroffenen Steuerelemente ausgelöst werden oder auf deren Inhalt zugreifen. Für eine möglichst große Kontrolle soll der Benutzer vor dem Umbenennen vorher sehen, für welche Steuerelemente eine Namensänderung Sinn macht, und dann selbst auswählen, ob dies auch für alle angegebenen Steuerelemente geschehen soll. Das Add-In soll dazu die betroffenen Formulare und Berichte sowie ihre Steuerelemente in einem Formular anzeigen.
Das sieht, wenn das Add-In einmal fertig ist, wie in Bild 3 aus. Es zeigt ein Kombinationsfeld zum Auswählen aller vorhandenen Formulare und Berichte an. Beim Einlesen der Objekte werden jedoch nur diejenigen berücksichtigt, die überhaupt noch gebundene Steuerelemente enthalten, deren Name mit dem Feldnamen übereinstimmt.
Bild 3: Das fertige Add-In zum Anpassen von Steuerelementbezeichnungen
Das Listenfeld unter dem Kombinationsfeld zeigt alle gebundenen Steuerelemente des ausgewählten Formulars oder Berichts an, deren Name-Eigenschaft mit der Steuerelementinhalt-Eigenschaft übereinstimmt.
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