mossTOOLs Prozedurbrowser - COM-Addin für den VBA-Editor
(Zum Download... | History)
In umfangreichen Code-Modulen geht leicht die Übersicht über die Prozeduren verloren - Sie kennen sicher das nervige Scrollen in langen Code-Abschnitten. Die beiden Kombinationfelder am oberen Rand jedes Code-Fensters ermöglichen zwar wohl das Navigieren zu Prozeduren, sie sind aber ziemlich unhandlich. In den Umgebungen anderer Entwicklungssysteme, etwa Delphi, gibt es dazu einen "Codeexplorer", welcher die Prozeduren in einer Leiste am linken Rand auflistet und bei Klick auf einen Prozedureintrag den entsprechenden Code-Abschnitt anspringt.
Das vorliegende Add-In bildet diese Funktionalität im VBA-Editor nach. Es klinkt sich, ähnlich dem Projektexplorer, in die Entwicklungsumgebung ein und kann an beliebiger Stelle platziert oder angedockt werden.
Anmerkung: Unter Office 97 funktioniert das Add-In nicht, weil COM-Addins dort nicht unterstützt werden.
Installation
VBA-Addin-Manager
Nach Installation über das Installationspaket kann das Addin im Add-In-Manager von VBA geladen werden. Dieser wird über das Menü Add-Ins | Add-In-Manager... geöffnet. Hier ist dann die Zeile mossSOFT ProcBrowser zu markieren und das Ladeverhalten mit den zwei Checkboxen unten rechts zu bestimmen. Ein Häkchen auf Geladen/Entladen lädt das Add-In für die aktuelle Sitzung, ein Häkchen auf Beim Start laden lädt es automatisch bei jedem weiteren Start der Entwicklungsumgebung. Dies dürfte die Standardeinstellung sein.
Nach Schließen des Add-In-Managers steht das Add-In im Menü Add-Ins mit dem Eintrag mossSOFT Proc Browser zur Verfügung:

Das Addin-Fenster öffnet sich beim erstem Mal noch freischwebend über dem VBA-Editor, lässt sich aber durch Ziehen mit der Maus an beliebige Stelle in die Entwicklungsumgebung andocken, was dann etwa so aussieht:
Angedocktes Procbrowser-Fenster
Weitere Beispiele mit Vollansicht des Procbrowsers:

Einstellungen
Das ProcBrowser-Fenster zeigt auf Rechtklick in den freien Bereich oder auf die Symbolleiste ein Kontextmenü, über das Einstellungen zu Funktionen des Addins oder dessen Erscheinungsbild vorgenommen werden können:
Kontextmenü des Procbrowsers
Kontextmenü
- Löschen bestätigen Über das Kontextmenü des Procbrowsers kann eine markierte Prozedur gelöscht werden. Ist hier ein Häkchen gesetzt, dann erfolgt dabei immer eine Sicherheitsabfrage.
- Güligkeitsbereich Wenn aktiviert, so werden die Prozedureinträge gemäß dem Geltungsbereich der Prozeduren/Deklarationen formatiert: Als Private oder Friend deklarierte Elemente erscheinen in normaler Schrift, Public-Elemente erscheinen fett.
- Konstanten anzeigen Standardmäßig ist die Anzeige von Konstanten des Modulkopfs im Procbrowser deaktiviert, um Platz zu sparen und die Performance zu erhöhen. Sie kann hier jedoch eingeschaltet werden.
- PlusMinus-Zeichen Wenn aktiviert, so erscheinen im Treeview die aus dem Windows-Explorer bekannten PlusMinus-Zeichen vor den Knoten. Wenn deaktiviert, dann schalten Deklarationen und Code-Bereich sich abwechselnd bei Klick ein.
- Autotrack Ist dieser Menüeintrag aktiviert, so reicht bereits ein Bewegen der Maus über die Listeneinträge, um zwischen den Prozeduren im Code-Fenster zu scrollen.
- Tipptext Ist dieser Eintrag aktiviert, so wird beim Bewegen der Maus über die Liste in einem gelben Infofeld die vollständige Prozedur-/Deklarationszeile angezeigt. Siehe auch...
- Tipptext - Kommentarzeilen einbeziehen Falls aktiviert, dann werden auch mögliche Kommentarzeilen vor der Deklarationszeile in den Tipptext miteinbezogen.
- Breite automatisch Der Procbrowser kann die Breite seines Fensters dem Inhalt der Prozedureinträge anpassen. Ist diese Option aktiviert, dann verändert sich seine Breite fortlaufend gemäß dem längsten Eintrag des Treeviews.
- Liste sortiert Wenn aktiviert, so wird die Liste der Prozeduren/Deklarationen alfanumerisch sortiert. Andernfalls erscheinen sie in der gleichen Reihenfolge, in der sie auch im Modul angeordnet sind.
- Ausgabe Funktionswert in Direktfenster Über das Prozedur ausführen...-Feature des Procbrowsers (s.u...) kann der Rückgabewert einer Funktion angezeigt werden. Ist diese Option aktiv, dann erfolgt die Ausgabe des Ergebnisses im VBA-Direktfenster und andernfalls in einem Meldungsfenster.
- ...Direktfenster dabei zuerst leeren Falls voriges Feature aktiviert, dann leert das Tool vor Ausgabe des Ergebnisses zuerst den Inhalt des Direktfensters komplett.
- Fontauswahl... Ruft den Schriftartendialog auf, mit dem die Schriftart und -größe der Procbrowsers eingestellt werden kann. Standard: Arial, 8 pt.
- Sprache Kontextmenü sowie Dialoge des Procbrowsers können wahlweise in Deutsch oder Englisch erscheinen.
- Über... About-Dialog des Procbrowsers mit Versionsinformation.
Funktionen
Das Tool listet die Prozeduren und Deklarationen des jeweils gerade aktiven Code-Fensters automatisch auf. Angegeben werden die Namen der Prozeduren bzw. Deklarationen und Symbole, die die Art des Elements widerspiegeln. Bei Klick auf einen Eintrag scrollt das Codefenster soweit, dass sich die markierte Prozedur/Deklaration am oberen Rand des Codefensters befindet. Der Root-Eintrag zeigt den Namen des aktiven VBA-Projekts an, der Eintrag eine Ebene darunter den Namen des Moduls.
Elemente
Toolbar
Toolbar des Procbrowsers
Refresh-Button Wenn im aktiven Modulfenster neuer Code-Text eingegeben wird und so gegebenenfalls neue Prozeduren entstehen, dann spiegelt sich dies nicht unbedingt sofort im Prozedurbrowser wieder. Dies wurde aus Performance-Gründen so gestaltet, weil ein fortlaufendes Analysieren des Quelltexts im Hintergrund erhebliche Resourcen benötigte. Erst, nachdem mindestens 5 neue Zeilen im Modulfenster eingegeben oder gelöscht wurden, scannt der Procbrowser das Modul erneut und listet den Inhalt korrekt auf. Ein Klick auf den Refresh-Button aber erzwingt diesen Vorgang jederzeit.
Projektexplorer-Button Im Screenshot ganz oben wurde der Procbrowser links vom Modulfensterbereich und rechts vom VBA-Projektexplorer angeordnet. In diesem Fall wird der Projektexplorer-Button im Toolbar sichtbar. Ein Klick auf ihn blendet den Projektexplorer aus - und bei wiederholtem Klick wieder ein. Dadurch vergrößert sich der für die Code-Module verwendbare Bereich der IDE. Sie können in diesem Fall aber trotzdem über die Module-Combobox des Tools innerhalb der Module des VBA-Projekts navigieren.
Resize-Button Mit dieser Schaltfläche kann der Procbrowser auf minimale Breite gebracht werden, um die Ansicht des Code-Fensters zu vergrößern. Ein wiederholter Klick stellt die vorherige Breite wieder her. Das Feature ist etwa dann nützlich, wenn Sie Code vor sich haben, der nicht umgebrochen ist und über den sichtbaren Bereich des Code-Fensters hinausragt. Sie sparen sich damit unter Umständen das horizontale Scrollen des Code-Fensters. Die minimale Breite des Procbrowsers ergibt sich aus der für die Anzeige der Schaltflächen des Toolbars notwendige Breite.
Procbrower minimiert
Modul-Combobox

Über die Dropdown-Schaltfläche des Modulbrowsers kann eine Liste mit allen Modulen des aktiven VBA-Projekts aufgeklappt werden. Ein Klick auf einen Eintrag navigiert dann zum entsprechenden Modul und öffnet dessen Code-Fenster. Das ist etwa dann nützlich, wenn Sie den VBA-Projektexplorer ausgeblendet haben. Sie können also allein mit dem Procbrowser im VBA-Projekt navigieren und brauchen den Projektexplorer imgrunde nur immer dann, wenn Sie Funktionen aus dessen Kontextmenü benötigen.
Anmerkung: Die Symbole der Combobox sind sehr allgemein und geben aktuell noch nicht Dasselbe wieder, wie der Projektexplorer. Je nach Wirtsanwendung unterscheiden sich Dokumentklassen ja voneinander - ein Word- oder Excel-Dokument sehen anders aus, als etwa ein Access-Formular oder -Bericht. Der Modulbrowser unterscheidet in Version 1.5x des Tools generell nur zwischen Modulen, Klassen, Dokumenten und Userforms.
Tipptext
Über das Kontextmenü des Tools kann das Tipptext-Feature aktiviert werden. In diesem Modus zeigen sich beim Überfahren der Eintrage des Procbrowsers Popup-Tipps, die Infos zum darunter liegenden Element widergeben. Im Einzelnen können das die folgenden Angaben sein:
Prozeduren ausführen
Wenn Sie im Procbrowser eine Prozedur markieren und rechtsklicken, dann erscheint ein gesondertes Kontextmenü, über das Sie diese Sub- oder Function-Prozedur zur Ausführung bringen können:

Das funktioniert prinzipbedingt allerdings nur für normale Module und nicht in Klassenmodulen. Nach Ausführung der Prozedur wird die benötigte Zeit in Millisekunden je nach Einstellung entweder im VBA-Direktfenster ausgegeben, oder in einem Meldungsfenster (s.o.). Bei Funktionen wird zusätzlich der Rückgabewert gezeigt. Erwartet die Prozedur Parameter, so erscheint zunächst ein Dialogfenster des Procbrowsers, in dem Sie die benötigten oder optionalen Parameter eingeben können. Beispiele:


Als Parameter kommen selbstredend nur Standarddatentypen in Frage - Recordsets etwa können hier nicht übergeben werden. Übrigens werden bei wiederholtem Aufruf einer bestimmten Prozedur die zuvor beriets eingegebenen Parameter automatisch voreingetragen.
Die Ausgabe des Resultats im Direktfenster könnte abschließend so aussehen:

Prozeduren kopieren, löschen, verschieben
Über das Kontextmenü des Procbrowsers lassen sich Prozeduren auch kopieren, ausschneiden oder löschen. Verwenden Sie diese Funktionen mit Vorsicht! Eine kopierte oder ausgeschnittene Prozedur fügen Sie in ein - wahlweise anderes - Modul ein, indem Sie das Kontextmenü des Body-Knotens klicken und auf Einfügen gehen. Die Prozedur wird dann am Ende des Moduls eingefügt.
Symbole
Die im Procbrowser für die Einträge verwendeten Symbole haben folgende Bedeutungen:
Root des Baums; Projektname
Knoten für die Moduldeklarationen
Knoten für den Prozedurbereich
(Normales) Modul
Klasse
Formular
Dokument oder Bericht (Access)
Userform (MS Forms)
ActiveX-Designer
Konstante
Enumerationskonstanten
API-Deklaration
Benutzerdefinierter Typ
Globale oder modulweit gültige Variable
Ereignisdeklaration (Event)
Sub-Prozedur
Funktion
Eigenschaft (Property Get)
Eigenschaft (Property Let/Set)
Unaufgelöste VBA-Komponente oder fehlerhafte Prozedur
Anmerkung zu : Es ist ohne Weiteres möglich, in einem Modul zwei Prozeduren oder zwei Variablen den selben Namen zu vergeben, solange man es nicht kompiliert - denn dann würde der Compiler die Doppelungen kritisieren. Das Add-In verfährt mit solchen Doppelungen so: - Bei Prozeduren wird die zweite gleichnamige ignoriert und erscheint nicht im Baum - Bei Variablen wird auch die zweite angezeigt, jedoch mit dem Zusatz "Fehler!" und außerdem rot unterlegt
History
Das Tools wird bereits seit etwa seit dem Jahr 2004 weiterentwickelt. Wenn Sie sehen möchten, welche Änderungen die Entwicklung in dieser Zeit erfahren hat, dann sehen Sie sich die History an.
Download V 1.65
Der Freeware-Download des Procbrowsers kommt als MSI-Installationspaket. Es enthält neben der procbrowser.dll noch die für Treeviews benötigte Microsoft-Komponente mscomctl.ocx in der aktuellen Version 6.1.98.34 (siehe auch Anmerkungen in der History!). Die Installation per Doppelklick auf die setup_procbrowser.exe erfordert Administratorrechte! Für Vista ist eine entsprechende Elevation eingebaut, und deshalb ist das Installationspaket auch als Exe-Datei mit einem Bootstrapper versehen. Deinstallation geschieht über Systemsteuerung | Software und den Eintrag mossSOFT Procbrowser.
Tipp: Sehen Sie sich auch unseren allgemeinen Beitrag zur Installation von COM-Add-Ins an.
Download mossTOOLs Procbrowser
Donate: Was ist das?
|
Gruß
Carsten