Erweitern des VBA-Editors

André Minhorst, Duisburg und Sascha Trowitzsch, Berlin

Je ernsthafter man mit Access arbeitet, desto mehr verlagert sich der Schwerpunkt der Arbeit vom Access-Fenster auf die VBA-Entwicklungsumgebung. Und wie es mit einem Arbeitsplatz so ist, sollte man ihn sich so angenehm wie möglich gestalten – das gilt auch für die Programme, mit denen man arbeitet. Und das umso mehr, wenn sich tatsächlich die Möglichkeit dazu ergibt. Die VBA-Entwicklungsumgebung lässt sich beliebig erweitern, wenn man das Know-how dazu besitzt. Das finden Sie hier und ein praktisches Beispiel gleich dazu: Ab jetzt können Sie durch den Code springen, wie Sie möchten – mit dem CodeHistory-Tool finden Sie schnell wieder zurück.

Hinweis

Die Beispieldateien befinden sich in der .zip-Datei AIU_CodeHistory.zip. Zwei Verzeichnisse enthalten je eine Version des Quellcodes mit und eine ohne Kommentare. Sie finden die Datei auf der Heft-CD oder im Internet unter http://www.access-im-unternehmen.de unter dem Shortlink 278. Grundlagen und verwandte Themen finden Sie in den Beiträgen Per VBA auf VBA-Code zugreifen, Shortlink 277 und Erweitern der VBA-Entwicklungsumgebung, Shortlink 237.

Die VBA-Entwicklungsumgebung lässt sich um verschiedene Elemente erweitern. Bei diesen Elementen handelt es sich um COM-AddIns, die nach ihrer Installation beim Start der Entwicklungsumgebung automatisch erkannt und den Voreinstellungen entsprechend entweder direkt geladen werden oder erst über den Add-In-Manager aktiviert werden müssen.

Erweiterungsmöglichkeiten

Für die VBA-Entwicklungsumgebung gibt es mehrere Möglichkeiten, eine Erweiterung zu integrieren. Interessant sind dabei die Varianten zum Starten beziehungsweise Anzeigen des Add-Ins und wie es sich in die Entwicklungsumgebung einfügt. Die einfachste Variante ist ein Add-In, das nach dem Laden im Add-Ins-Menü zur Verfügung steht und eine Operation ausführt, für die keine Benutzeroberfläche benötigt wird – beispielsweise das automatische Hinzufügen von Code anstelle der Einfügemarke.

Darüber hinaus gibt es sowohl für den Aufruf als auch für den Grad der Interaktion mit dem Benutzer einige Varianten. Für den Aufruf eines Add-Ins bietet sich neben dem Add-Ins-Menü ein Eintrag in ein anderes bestehendes Menü (dabei kann es sich auch um ein Kontextmenü handeln) oder gar die Erstellung einer eigenen Menüleiste an.

Was die Interaktion mit dem Benutzer betrifft, so gibt es neben den Add-Ins, die ihren Dienst ohne Rückfragen erledigen, solche, die zusätzliche Benutzereingaben für ihre Arbeit benötigen. Dabei kann die Art der Interaktion von Meldungsfenster und Eingabefenster bis hin zu mehreren Benutzerformularen reichen.

Immer präsent (wenn nicht gerade ausgeblendet) sind die “Toolwindows”. Sie kennen bereits einige Beispiele für diese in der Entwicklungsumgebung verankerbaren Fenster: Das Direktfenster ist eines und auch der Projekt-Explorer, das überwachungsfenster und das Eigenschaftsfenster sind Toolwindows.

Diese Fenster haben gemeinsam, dass sie sowohl frei schweben als auch an den Rahmen des Editorfensters oder andere Toolwindows angedockt werden können. Der wichtigste Unterschied zu den Benutzerformularen ist die ständige Sichtbarkeit dieser Fenster.

Bild 1: Festlegen des Ladeverhaltens von COM-Add-Ins

Bild 2: Aktivieren des CodeHistory-Tools

Toolwindows

Toolwindows sind das Thema dieses Beitrags: Sie erfahren, wie Sie diese erstellen, installieren und aktivieren oder deaktivieren. Leider lassen sich Toolwindows nicht mit Access erstellen; Sie benötigen dazu Microsoft Visual Basic 6 (Visual Studio 6). Sollten Sie nicht in Besitz dieses Tools sein, können Sie immerhin das hier vorgestellte Tool für die Entwicklung mit der VBA-Entwicklungsoberfläche verwenden.

Der Entwicklungsprozess eines Toolwindows lässt sich grob in die Erstellung des Gerüsts mit den grundlegenden Elementen, das unter anderem die Funktionalität zum Einklinken in die Benutzeroberfläche sowie ein jungfräuliches Toolwindow enthält und das Aufsetzen der eigentlichen Funktionalität aufteilen.

Den ersten Teil haben wir bereits für Sie erledigt: Auf der Heft-CD finden Sie ein VB-Projekt mit dem Quellcode für das Gerüst eines Toolwindows. Der erste Teil dieses Beitrags enthält eine Beschreibung der enthaltenen Komponenten. Auch für die Schritte vom leeren Gerüst zum fertigen Toolwindow ist gesorgt: Sie finden sowohl das komplette Projekt im Quellcode als auch die fertige .dll für den Soforteinsatz auf der Heft-CD. Leider, und das ist die schlechte Nachricht, würde eine ausführliche Vorstellung des Tools mit dem enthaltenen Quellcode circa ein bis zwei komplette Magazine verschlingen, sodass wir den Quellcode nur auszugweise im Beitrag vorstellen können. Der in den Beispieldateien enthaltene Quellcode ist allerdings sehr gut dokumentiert.

In den nachfolgenden Abschnitten erfahren Sie, wie Sie COM-Add-Ins verfügbar machen und wie das Beispiel-Add-In funktioniert.

Add-Ins verfügbar machen

Den Add-In-Manager können Sie in der VBA-Entwicklungsumgebung über den Menüeintrag Add-Ins/Add-In-Manager… starten.

Der Add-In-Manager aus Bild 1 zeigt bereits das weiter unten in diesem Beitrag vorgestellte VBA-CodeHistory-Tool an. Um das Tool zu aktivieren, das heißt, es in der VBA-Entwicklungsumgebung sichtbar zu machen, sind zwei Schritte nötig: Aktivieren Sie die Option Geladen/Entladen und wählen Sie nach dem Schließen des Dialogs den neuen Eintrag im Add-Ins-Menü aus (siehe Bild 2).

Bild 3: Anzeigen der Definition einer Prozedur

Bild 4: Liste bereits besuchter Codestellen

Funktionen des CodeHistory-Tools

Möglicherweise kennen Sie selbst das Dilemma: Sie durchforsten die Prozeduren und Module einer VBA-Anwendung, um zu verstehen, wie diese funktioniert. Egal ob es sich um eine eigene Entwicklung oder um das Produkt eines anderen Entwicklers handelt – wenn Sie länger nicht mehr oder noch gar nicht hineingeschaut haben, müssen Sie sich zuerst in die Struktur einarbeiten. Sie starten also mit einer Prozedur, die durch eine bestimmte Schaltfläche aufgerufen wird und untersuchen dessen Funktion. Dabei finden Sie mehrere weitere Prozeduraufrufe – also schnell hinterher und die entsprechenden Module in weiteren Codefenstern aufrufen. Die Entwicklungsumgebung stellt geeignete Mittel dafür zur Verfügung – etwa den Kontextmenüeintrag Definition beim Rechtsklick auf den Aufruf der gewünschten Prozedur (siehe Bild 3).

Das ganze Spiel machen Sie noch zwei oder drei Mal, dann möchten Sie vielleicht zur Ausgangprozedur zurückkehren – aber in welchem Modul war die noch Mal Hier kommt das CodeHistory-Tool ins Spiel. Es speichert Positionen im Code so, dass Sie mühelos per Mausklick auf einen Eintrag zur entsprechenden Stelle zurückkehren können.

Aufzeichnen von Positionen

Das CodeHistory-Tool zeichnet Informationen über Code-Zeilen auf, die Sie mit der Maus “besucht” haben und gibt diese in einer Liste aus (siehe Bild 4). Mit einem Mausklick auf einen der Einträge öffnen Sie das Modul mit der entsprechenden Codestelle und zeigen diese an.

Das Toolwindow mit der Liste der gemerkten Positionen im Code zeigt den Namen des Projekts, den Modulnamen, die Zeile und den Prozedurnamen an. Zusätzlich finden Sie ganz links ein Sternchen (*) – auf diese Weise markierte Einträge werden dauerhaft gespeichert und bei der nächsten Sitzung wieder geladen.

Die Schaltflächen im oberen Bereich haben folgende Funktionen:

  • Zurück: Bewegt die Markierung in der Liste um einen Eintrag nach oben und springt zu der entsprechenden Stelle im Code.
  • Vorwärts: Führt die obige Aktion in die andere Richtung aus.
  • Liste löschen: Leert die Liste und damit auch alle dauerhaft gespeicherten Einträge.
  • Einstellungen: öffnet den Dialog zum Festlegen der Einstellungen
  • Aufklappen/Zuklappen: Blendet die Liste ein und aus
  • Wann wird eine Position gespeichert

    Wenn jede Zeile, in die Sie die Einfügemarke setzen, zur Liste hinzugefügt würde, wäre diese bald voll. Der Sinn dieses Tools ist vielmehr, markante Sprünge zu speichern und das Zurückspringen an diese Stellen zu ermöglichen. Das Speichern einer Position erfolgt in folgenden Fällen, wobei Sie die ersten beiden Optionen im entsprechenden Dialog deaktivieren können:

  • Sie markieren erstmalig eine Zeile in einem neu aktivierten Modul.
  • Sie klicken im gleichen Modul auf eine weitere Zeile, die mehr als n Zeilen von der vorher markierten Zeile entfernt ist, wobei Sie den Wert für n in den Optionen des Tools einstellen können.
  • Sie klicken mit der rechten Maustaste auf die zu speichernde Position und wählen den Kontextmenüeintrag Codehistory: Stelle merken (siehe Bild 5).
  • Sie verwenden die Tastenkombination Strg + Umschalt + S.
  • Bild 5: Kontextmenüeinträge des CodeHistory-Tools

    Navigieren zwischen den Positionen

    Nachdem Sie einige Positionen aufgezeichnet haben, möchten Sie gezielt zu der einen oder anderen zurückspringen – vielleicht möchten Sie aber auch einfach den zurückgelegten Weg nachvollziehen. Das Tool bietet einige Möglichkeiten zum Navigieren an:

  • Mausklick auf ein Eintrag in der Positionsliste im Toolwindow
  • Verwenden der Schaltflächen Zurück und Vorwärts im Toolwindow
  • Auswählen der Einträge CodeHistory: Zurück und CodeHistory: Vorwärts im Kontextmenü des Codefensters
  • Auswahl des Eintrags CodeHistory: Gehe zu Stelle … und anschließende Verwendung des erscheinenden Dialogs (siehe Bild 6)
  • Verwenden der Tastaturkombinationen Strg + Umschalt + L (Gehe zu Codestelle…), Strg + Umschalt + Z (Zurück) oder Strg + Umschalt + V (Vorwärts)
  • Bild 6: Diese Schnellauswahl zeigen Sie per Kontextmenü an.

    Optionen des Tools

    Mit der Schaltfläche Einstellungen des Toolwindows können Sie einen Dialog zum ändern der Einstellungen öffnen (siehe Bild 7).

    Die erste Option legt fest, wie viele Zeilen eine Zeile von der zuvor gespeicherten Position entfernt sein muss, damit das Tool diese automatisch speichert. Die standardmäßig eingestellten 40 Zeilen entsprechen ungefähr einer Bildschirmseite, somit wird eine Zeile, die mehr als eine Bildschirmseite als die vorherige entfernt liegt, automatisch gespeichert. Der kleinste einstellbare Wert, den dieses Optionsfeld annimmt, ist 3.

    Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

    TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

    Schreibe einen Kommentar