 | Unser Angebot für Sie! Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'! |
| | | | | |
Prozedurbrowser für den VBA-Editor
André Minhorst, Duisburg, und Sascha Trowitzsch, Berlin
Der Funktionsumfang der Visual Basic-Entwicklungsumgebung von Microsoft Access und den anderen Office-Anwendungen ist eigentlich völlig ausreichend. Man sollte aber keinen allzu genauen Blick auf moderne und offene Entwicklungsumgebungen wie beispielsweise Eclipse werfen, die von den Mitgliedern der Open Source-Gemeinde ständig erweitert werden. Dass auch die VBA-VBE erweiterbar ist, wissen die wenigsten. Der vorliegende Beitrag stellt ein sehr praktisches Tool vor, das Sie bereits nach kurzer Zeit vermutlich nicht mehr missen möchten: den Prozedurbrowser.
Beispieldateien downloaden:

Der Prozedurbrowser
Der VBA-Editor enthält drei Elemente für die Navigation in Modulen und Prozeduren (s. Abb. 1). Mit dem Objektbrowser, der sich üblicherweise im linken Bereich befindet, können Sie die Formular- und Berichtsmodule, die Standardmodule und die Klassenmodule auswählen. Direkt oberhalb des Quellcode-Fensters befinden sich zwei Kombinationsfelder zur Auswahl des Objekts und der enthaltenen Deklarationen und Prozeduren. Wer diese beiden Kombinationsfelder einmal genutzt hat, um etwas schneller durch Module mit mehreren hundert Zeilen Code zu navigieren, wird von ihrem Komfort unter Umständen nicht gerade begeistert sein.

Abb. 1: Der VBA-Editor in der Grundausstattung ...
Der in diesem Beitrag vorgestellte Prozedurbrowser zeigt die in einem Modul enthaltenen Deklarationen und Prozeduren übersichtlich in einem eigenen Fenster an. Damit ersetzt er nicht nur die Funktion der beiden Kombinationsfelder, sondern fügt auch noch einige Features hinzu - beispielsweise durch die Anzeige der Variablendeklaration oder der unterschiedlichen Darstellung der einzelnen Prozedurarten (s. Abb. 2). Bereits beim Überfahren eines Variablen- oder Prozedurnamens springt das Codefenster zum gewünschten Code. Zusätzlich können Sie per Kontextmenü einige weitere Funktionen aufrufen.

Abb. 2: ... und mit Prozedurbrowser
In den folgenden Abschnitten erfahren Sie, wo Sie den Prozedurbrowser bekommen, wie er installiert wird und welche Funktionen er im Detail bietet.
HinweisLeider besteht nur für Benutzer von Access 2000 und höher Grund zur Freude: Com-Add-Ins werden nämlich erst mit dem unter Office 2000 eingeführten gemeinsamen VBA-Editor unterstützt. (
Download und Installation
Der Prozedurbrowser ist ein Com-Add-In, das in zwei Varianten verfügbar ist. Die erste Version (procbrowser.exe) setzt das Vorhandensein des Microsoft Windows Common Control 6.0 (MSCOMCTL.OCX) voraus. Sie kopiert die Datei procbrowser.dll in das Verzeichnis c:\Programme\Gemeinsame Dateien\mosssoft und legt einige Einträge in der Registry an.
HinweisOb die Datei MSCOMCTL.OCX auf dem Zielrechner installiert ist, finden Sie am einfachsten heraus, wenn Sie im Verzeichnis c:\Windows\System32 danach suchen. (
Die zweite Variante (procbrowser.msi) kommt als Microsoft Installer Package und bringt das MSCOMCTL.OCX direkt mit.
HinweisSie finden die bei Drucklegung dieses Beitrags aktuellen Versionen auf der beiliegenden CD. Das Tool befindet sich noch in der Entwicklung und wird gegebenenfalls noch erweitert. Informationen über neue Versionen und Downloadmöglichkeiten finden Sie hier: http://www.mosssoft.de/ public/procbrowser/ (
Integration des Prozedurbrowsers
Nach der Ausführung der Installationsdatei sind nur noch zwei Schritte erforderlich. Starten Sie Access und öffnen Sie den VBA-Editor (am schnellsten per Strg + G). Rufen Sie dort über den Menüeintrag Add-Ins/Add-In-Manager... den Dialog Add-In-Manager auf.
Der Add-In-Manager zeigt, wenn die Installation erfolgreich war, den Eintrag aus Abb. 3 an. Wählen Sie den Eintrag aus und stellen Sie mit den beiden Optionen Geladen/Entladen und Beim Start laden das Ladeverhalten des Add-Ins ein. Die erste Option lädt das Add-In sofort, die zweite legt fest, dass es immer automatisch beim Start des VBA-Editors geladen wird.

Abb. 3: Der Add-In-Manager des VBA-Editors
Wenn Sie den Dialog nun schließen, tut sich erstmal nichts. Der Prozedurbrowser ist zunächst nur der Liste der zu ladenden Add-Ins hinzugefügt worden. Sie müssen ihn noch an der gewünschten Stelle platzieren. Dazu öffnen Sie erneut den Menüpunkt Add-Ins, wählen aber diesmal den neu hinzugekommenen Eintrag mossSOFT Proc Browser aus.

Abb. 4: Geladene Add-Ins sind über diesen Menüpunkt erreichbar.
Dieser erscheint dann zunächst als "frei schwebendes" Fenster im VBA-Editor. Um ihn an einer bestimmten Stelle zu verankern, schieben Sie ihn so lange in die gewünschte Richtung, bis der dicke Rahmen sich in einen dünnen Rahmen verändert, und lassen ihn dann los. Wo Sie den Prozedurbrowser verankern, ist Ihrem persönlichen Geschmack überlassen, aber eine Anordnung in der Nähe des Projektbrowsers macht sicher Sinn.
Funktionen des Prozedurbrowsers
Der Prozedurbrowser zeigt den Deklarationsteil und die Prozeduren des aktuell im Projektbrowser ausgewählten Moduls an (s. Abb. 5).
Dabei verwendet der Prozedurbrowser einige unterschiedliche Symbole und Farben, um neben dem Namen des Elements direkt noch weitere Informationen über dessen Art mitzuliefern. Tab. 1 zeigt eine Übersicht der möglichen Elementarten.
Neben den enthaltenen Symbolen unterscheidet der Prozedurbrowser private und öffentliche Prozeduren, indem er sie durch verschiedene Farben kennzeichnet (in den Screenshots nicht zu erkennen).

Abb. 5: Anzeige des Deklarationsteils und der Prozeduren eines Moduls
Symbol |
Elementart |

|
Projekt |

|
Kein Codefenster offen |

|
Standardmodul |

|
Klassenmodul |

|
Formularmodul |

|
MSForms Userform-Modul |

|
Berichtsmodul |

|
ActiveX-Modul |

|
Sub-Prozedur |

|
Function-Prozedur |

|
Property Get-Prozedur |

|
Property Let/Set-Prozedur |

|
Type |

|
API-Deklaration |

|
Enumeration |

|
Variable |

|
Event |
Tab. 1: Symbole im Prozedurbrowser
Anzeigen eines Elements
Um eine bestimmte Prozedur im Codefenster anzuzeigen, brauchen Sie in der Standardeinstellung einfach mit der Maus über den gewünschten Eintrag zu fahren. Die entsprechende Deklaration/Prozedur wird dann meist am oberen Rand des Codefensters angezeigt.
Kontextmenü eines Elements
Jeder Eintrag des Prozedurbrowsers besitzt ein Kontextmenü, das weitere Aktionen und Informationen bereitstellt (s. Abb. 6).

Abb. 6: Kontextmenü des Prozedurbrowsers
Die erste Ebene des Kontextmenüs enthält einige Einträge, die unter Umständen eine Menge Tipparbeit sparen: Mit der Anweisung Prozedur ausführen starten Sie die aktuell markierte Prozedur. Das funktioniert nicht mit Funktionen und Prozeduren in Klassenmodulen, aber mit allen Prozeduren in Standardmodulen. Sogar der Aufruf von Prozeduren mit Parametern ist vorgesehen: Dabei zeigt der Prozedurbrowser einen Dialog zur Eingabe der gewünschten Parameter an (s. Abb. 7).
Die beiden Einträge Prozedur kopieren und Prozedur löschen kopieren die aktuelle Prozedur in die Zwischenablage beziehungsweise löschen die aktuelle Prozedur. Damit sparen Sie sich das lästige Markieren der kompletten Prozedur, was sich gerade bei längeren Prozeduren bemerkbar macht.

Abb. 7: Abfrage von Prozedur-Parametern

Abb. 8: Anzeige der vollständigen Deklaration per TippText
Das Untermenü Optionen enthält Einträge mit der folgenden Bedeutung:
Löschen bestätigen: Legt fest, ob Löschvorgänge nochmals zu bestätigen sind.
Farbunterlegung: Aktiviert oder deaktiviert die Unterlegung der Elemente mit unterschiedlichen Farben.
PlusMinus-Zeichen: Aktiviert oder deaktiviert die Anzeige von Plus- und Minus-Zeichen zum Auf- und Zuklappen von Ebenen.
Autotrack: Legt fest, ob eine Prozedur direkt beim Überfahren des Elements oder erst nach einem Klick darauf angezeigt wird.
TippText: Aktiviert oder deaktiviert die Anzeige der kompletten ersten Anzeige beim Überfahren eines Elements (s. Abb. 8).
Liste sortiert: Legt fest, ob die Elemente in alphabetischer Reihenfolge oder in der Reihenfolge des Vorkommens im Code angezeigt werden.
Refresh Rate: Legt die Zeit zwischen zwei Aktualisierungen in Millisekunden fest. Eine kurze Refresh Rate kann die Performance verschlechtern.
Aktualisieren der Anzeige
Neben der automatischen Aktualisierung der Anzeige, deren Intervall über die Option Refresh Rate festgelegt wird, können Sie die Anzeige auch manuell aktualisieren. Dazu verwenden Sie die Schaltfläche mit der Beschriftung Refresh.
Zusammenfassung und Ausblick
Mit dem Prozedurbrowser erhalten Sie ein kostenloses Tool, das die Navigation in langen Prozeduren sehr vereinfacht und das außerdem die Ausführung von Prozeduren ohne das mühsame Eintippen der Aufrufe im Testfenster ermöglicht.
Die Erstellung solcher COM-Add-Ins ist zwar sehr schlecht dokumentiert; aber die benötigten Schritte grenzen bei weitem nicht an Zauberei.
Datum |
Beschreibung |
11.01.2006 |
- Bugfix: Das Ausführen einer
Prozedur über das Kontextmenü misslang bisher unter Word, Excel und
Powerpoint. Dies ist in der aktuellen Version gefixt. (Anmerkung: Unter
Outlook
ist das Ausführen von Prozeduren grundsätzlich aus technischen Gründen
nicht möglich.)
|
09.01.2006 |
- Ausführen einer Prozedur
über das Kontextmenü des ProcBrowsers misst die Ausführungszeit und
zeigt sie an.
|
19.11.2005 |
- Der Kontextmenüpunkt "Farbunterlegung"
ist in "Gültigkeitsbereich" geändert.
- Statt der bisherigen Identifitierung
des Gültigkeitsbereiches durch Farbhintergrund einer Zeile:
- Public-, Global-Deklarationen sind in schwarzer Schrift und fett
- Private-Deklarationen sind in grauer Schrift
- Static-Deklarationen sind in hellblauer Schrift
- Friend-Deklarationen sind in violetter Schrift
- Der ProcBrowser merkt sich
nun den Status des "Declares"-Knotens: Wenn er eingeklappt wird, dann
bleibt er das auch beim Wechsel in ein anderes Modul. (Das war bisher
nicht so; bei Wechsel war immer der gesamte Baum ausgeklappt)
|
11.08.2005 |
- Das Addin parst nun durchgehend auf Änderungen der Codezeilenzahl. Neu hinzugefügte oder gelöschte
Prozeduren werden somit erkannt und dies im ProcBrowser angezeigt. Das
häufige Klicken auf den "Refresh"-Button entfällt
somit.
|
04.09.2004 |
- Zusätzlicher Menüpunkt "Prozedur
ausführen..." im Kontextmenü. (Markierte Prozedur wird
ausgeführt und fragt ggfls. in erscheinendem Dialogfeld nach Parametereingabe.)
- Bug bei Anweisungen zur
Bedingten Kompilierung (#Const, #If) beseitigt
|
04.04.2004 |
- Kontextmenü umgestaltet
(weicht nun von obiger Beschreibung leicht ab).
- Zusätzliche Menüpunkte:
- Löschen der markierten Prozedur aus dem Code
- Kopieren der markierten Prozedur in die Zwischenablage
|
22.02.2004 |
- Weitere kleine Bugs bei Scan
der Variablendeklarationen gefixt
|
19.02.2004 |
- Fehler bei Array-Variablendeklarationen
gefixt
|
13.02.2004 |
- Verlagerung der Optionen in
ein Kontextmenü; Möglichkeit der Sortierung der Einträge
|
08.02.2004 |
- Farbliche Unterscheidung
der Einträge im Treeview je nach Gültigkeitsbereich der Variablen/Prozeduren
- Bugfixes in Quelltext-Scan
|
07.02.2004 |
- Deklarationsbereich in den
Browser mit aufgenommen
- Bugfixes
|
03.02.2004 |
- Veröffentlichte Version
(intern 0.3.26)
|
|