window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Erweitern der VBA-IDE: Mit Code arbeiten

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Die Visual Basic-Entwicklungsumgebung ist definitiv in die Jahre gekommen. Wer schon einmal mit einer modernen Entwicklungsumgebung wie Eclipse oder dem Visual Studio .NET gearbeitet hat, wird bei der Rückkehr zur VBA-IDE möglicherweise einiges vermissen. Es gibt aber Möglichkeiten, die Entwicklungsumgebung zu erweitern – sogar mit den Hausmitteln von Access und mit nur zwei zusätzlichen Bibliotheken. Im zweiten Teil dieser Artikelreihe schauen wir uns an, wie Sie per Code mit dem VBA-Code des VBA-Projekts arbeiten.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1906_Entwicklungsumgebung_Code.accdb.

Einstieg

Was ließen sich nicht für tolle Funktionen für die VBA-Entwicklungsumgebung umsetzen: Automatisches Hinzufügen oder Entfernen von Code, Kommentarzeichen oder Nummerierungen, automatisches Anlegen von Klassen oder Modulen, Erweitern von Prozeduren um Fehlerbehandlungen und vieles mehr. Der Haken an der Sache ist: Wie programmiert man das, und wie soll man die Funktionen anschließend aufrufen

Grundlage für all diese Techniken ist das Objektmodell der Visual Basic-Entwicklungsumgebung (kurz: VBE). Die Grundlagen dazu haben wir bereits im ersten Teil dieser Artikelreihe betrachtet (siehe Erweitern der VBA-IDE: Mit Modulen). Sie bietet noch eine ganze Reihe von Möglichkeiten mehr: Sie können damit den Quellcode direkt manipulieren, Codepassagen suchen und ersetzen, Zeilen von Modulen und Prozeduren zählen oder die Prozeduren eines Moduls ermitteln.

Das ist alles schön und gut, aber was hilft es, wenn man die notwendigen Routinen zur Codemanipulation nur auf herkömmlichem Wege, also etwa per Direktfenster oder über die Schaltflächen eines Formulars, aufrufen kann Im letzteren Fall müsste man dazu sogar noch von der VBE zur Access-Oberfläche wechseln.

Und wer schon einmal versucht hat, über das VBE-Objektmodell einfach eine Menüleiste anzulegen und über die OnAction-Methode eines CommandBarButton-Objekts eine entsprechende Funktion zu starten, musste feststellen, dass dies leider nicht funktioniert.

Der vorliegende Beitrag beschäftigt sich sowohl mit den zur Manipulation von VBA-Modulen notwendigen Objekten, Methoden und Eigenschaften des VBE-Objektmodells als auch mit einem Trick, mit dem Sie den benutzerdefinierten Menüleisten in der VBA-Entwicklungsumgebung doch noch etwas abgewinnen.

Voraussetzungen für den Zugriff auf VBA-Module

Bevor es an das Programmieren geht, müssen Sie noch zwei Verweise einstellen: Neben den üblichen Verdächtigen sind das die Bibliotheken Microsoft Visual Basic forApplications Extensibility x.y und Microsoft Office x.y Object Library (siehe Bild 1). Erstere stellt das VBE-Objektmodell und Letztere die für das Anlegen von Menüs im VBA-Editor notwendigen Objekte bereit — dazu später mehr.

Notwendiger Verweis für das Programmieren der VBA-Entwicklungsumgebung

Bild 1: Notwendiger Verweis für das Programmieren der VBA-Entwicklungsumgebung

Code bearbeiten mit dem VBE-Objektmodell

Einige Informationen über die Handhabung von Modulen können Sie dem bereits weiter oben angegebenen Artikel entnehmen.

Im vorliegenden Artikel finden Sie Informationen über die Befehle, die sich mit dem Inhalt der Module beschäftigen – mit dem Code selbst. Dabei erfahren Sie, wie Sie die Methoden und Eigenschaften der VBE-Objektbibliothek verwenden, um den Code zu manipulieren.

Aus Platzgründen finden Sie hier keine komplette Vorstellung aller Objekte, Methoden und Eigenschaften. Wenn Sie weitere Informationen benötigen, schauen Sie sich einfach im Objektkatalog um und wählen dort die gewünschte Objektbibliothek aus (siehe Bild 2).

überblick über die VBE-Objektbibliothek

Bild 2: überblick über die VBE-Objektbibliothek

Moduleigenschaften erkunden

Legen Sie doch einfach mit ein paar Fingerübungen los und erkunden Sie die Eigenschaften eines Moduls. Dabei lernen Sie direkt, welche davon sich dazu eignen, einzelne Prozeduren oder den Deklarationsbereich eines Moduls zu extrahieren – die einzelnen Elemente sind nämlich nicht über eine Auflistung oder ähnliches auszuwählen, sondern müssen mühsam von Hand erfasst werden.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar