PDF Drucken E-Mail
Der VBA Proc Browser ist zehn. Happy Birthday!

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 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:

Menüeintrag Procbrowser

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:

Procbrowser im VBA-Editor Angedocktes Procbrowser-Fenster

Weitere Beispiele mit Vollansicht des Procbrowsers:

Beispielansicht 1 Beispielansicht 2

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:

Procbrowser Kontextmenü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

Procbrowser ToolbarToolbar 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.

Minimierter Procbrowser Procbrower minimiert

 

Modul-Combobox

Module-Combobox des Procbrowser Module-Combobox des Procbrwoser, aufgeklappt

Ü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:

Tipptext 1 Bei Prozeduren wird die komplette Prozedurdeklaration inklusive Umbrüchen angezeigt. Je nach Einstellung (s.o.) werden zusätzlich auch etwaige Kommentarzeilen vor der Prozedur mit einbezogen.
Tipptext 2 Bei Deklarationen des Modulkopfs werden alle zum Element gehörigen Code-Zeilen wiedergegeben.
Tipptext 3

Für den Knoten zu Moduldeklarationen wird die Zahl der im Modul angegebenen Deklarationen (Konstanten, Typen, Variablen, etc.) angezeigt.

Tipptext 4
Tipptext 5 Für den Root-Knoten zu Prozedurdeklarationen wird die Zahl der Prozeduren und die Gesamtzahl der Codezeilen im Modul angezeigt.
Tipptext 6 Für den Root-Knoten zum Modul wird eine Kombinationsinfo aus den zwei vorigen Tipptexten angezeigt.

 

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:

Kontextmenü zu Prozedureintrag


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:

 

Parameterdialog

Parameterdialog 2


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:

Ergebnis im Direktfenster


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:


Oberster Knoten 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.6.7

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!).
Seit V 1.6.6 zusätzlich die Microsoft-Komponente msaddndr.dll.
Die Installation per Doppelklick auf die setup_procbrowser.exe erfordert Administratorrechte! Für Vista ff. ist eine entsprechende Elevation eingebaut.
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 ToolDownload mossTOOLs Procbrowser

 



Donate: Was ist das?

 
Kommentare (3)
Procbrowser installiert nicht
3 Sonntag, 11. August 2013 um 15:34 Uhr
Rolf
Hallo!

Ich versuche gerade mit Access von 2003/2007 auf 2013 umzustellen, da wollte ich den Procbrowser in meiner Programmierumgebung wieder installieren, leider bricht das Setup mit folgender Fehlermeldung ab:
"Fehler beim Registrieren von Modul C:\*Pfad*\procbrowser.dll. HRESULT -2147467259."
Woran kann es liegen?
System: Win 7 Home Premium SP1 64 bit
Office 2013 (sollte eigentlich die 32 bit Version sein, kann man das irgendwo rausfinden???
Gruselige Optik hat das neue Office....

LG Rolf
ProcBrowser mit Access2013
2 Donnerstag, 11. Juli 2013 um 10:37 Uhr
JMalberg
Der ProcBrowser ist inzwischen ein für mich nahezu unverzichtbares Muss.

Leider kann ich ihn in Access2013 nicht mehr "beim Start autom. laden". Das geht jeweils nur einmal und dann wird die Option wieder (in der Registry) gelöscht.
Eine Deinstallation und Neuinstallation hat bisher diese Option auch nicht gehalten.
Module im-/exportieren
1 Mittwoch, 31. März 2010 um 15:38 Uhr
Carsten Pache
Der Procbrowser gefällt mir gut. IMHO kann er durchaus den eingebauten Projekt-Explorer ersetzen. Ich verwende allerdings regelmäßig dessen Funktionen "Datei importieren" und "Datei exportieren". Wäre es sehr aufwändig, diese Funktionen im ProcBrowser ebenfalls zur Verfügung zu stellen? (Falls ja, könnten die entsprechenden Dialogfenster gerne etwas größer sein :) ).

Gruß
Carsten

Ihren Kommentar hinzufügen

Ihr Name:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode: