twinBASIC: COM-Add-Ins für den VBA-Editor

Neben COM-Add-Ins für Access selbst (und natürlich auch für die übrigen Office-Anwendungen) können Sie mit twinBASIC auch COM-Add-Ins für den VBA-Editor programmieren. Dieser Beitrag beleuchtet detailliert, welche Schritte dazu notwendig sind. Dabei beginnen wir mit einer COM-Add-In-Vorlage, die wir für unseren Anwendungszweck anpassen. Anders als bei COM-Add-Ins für Access können Sie die Funktionen von COM-Add-Ins für den VBA-Editor nicht per Ribbon-Eintrag aufrufen, sondern benötigen einen Menüleisteneintrag dafür. Wir erläutern, wie dieser erzeugt wurd und wie Sie dann auf die Elemente des VBA-Editors zugreifen können.

twinBASIC

Im Beitrag twinBASIC – VB/VBA mit moderner Umgebung (www.access-im-unternehmen.de/1303) zeigen wir, was twinBASIC ist und wie Sie es installieren. twinBASIC ist eine Programmierumgebung auf Basis von Visual Studio Code mit einer Erweiterung von Wayne Philips, den manche vielleicht schon als Entwickler des Fehlerbehandlungstools vbWatchDog kennen. Sie können damit aktuell EXE-Dateien ohne Benutzeroberfläche erstellen oder DLLs, die Sie in Access-VBA-Projekte einbinden – siehe COM-DLLs mit twinBASIC (www.access-im-unternehmen.de/1304). Außerdem können Sie damit COM-Add-Ins erstellen. Im Beitrag twinBASIC – COM-Add-Ins für Access (www.access-im-unternehmen.de/1306) erfahren Sie, wie Sie COM-Add-Ins für Access-Anwendungen programmieren.

Wozu COM-Add-Ins für den VBA-Editor

Wer immer nur mit Access programmiert und keine anderen Entwicklungsumgebungen als den VBA-Editor nutzt, hat sich vielleicht schon so sehr an die recht betagte Entwicklungsumgebung gewöhnt, dass er nichts vermisst. Wer jedoch gelegentlich über den Tellerrand schaut und sieht, welche Möglichkeiten andere Entwicklungsumgebungen bieten, würde sich vielleicht doch über die eine oder andere Weiterentwicklung freuen. Nun ist die Benutzeroberfläche von Access an sich seit der Version 2010 nicht mehr weiterentwickelt worden – bis auf einige unbedeutende Änderungen. Der Funktionsumfang wurde hingegen eher eingeschränkt – man denke an die Replikation und das Sicherheitssystem. Ein ähnliches Bild liefert der VBA-Editor. Genau genommen liegen hier die letzten Änderungen noch länger zurück.

Gelegentlich hat ein Entwickler Ideen, wie er den VBA-Editor verbessern könnte, was theoretisch auch mit .NET-COM-Add-Ins möglich wäre. Es gibt einige Vorlagen, mit denen man Word-, Excel- oder Outlook-Erweiterungen programmieren kann. Für Access oder auch für den VBA-Editor gibt es jedoch keine Projektvorlagen, also müsste man schon komplett selbst herausfinden, an welchen Stellen in den Vorlagen für die anderen Office-Anwendungen man schrauben müsste.

Da ist es doch erfrischend, dass Wayne Philips eine Möglichkeit bietet, COM-Add-Ins in einer neuen, alternativen Entwicklungsumgebung zum VBA-Editor und zu Visual Studio (.NET) zu entwickeln – von Visual Studio 6 reden wir erst gar nicht mehr, da damit nur die Entwicklung von Programmen auf Basis von 32-Bit möglich ist.

Mit twinBASIC können Sie jedoch, wie auf den folgenden Seiten beschrieben, auch COM-Add-Ins für den VBA-Editor entwickeln und es ist sogar geplant, dass dies auch für die 64-Bit-Version von Office möglich sein soll (aktuell ist twinBASIC noch in einem frühen Entwicklungsstadium, Features wie die Programmierung von Userinterfaces beispielsweise folgen erst später).

Projektvorlage umwandeln

Auf der Webseite von Wayne Philips finden Sie unter dem Link https://twinbasic.com/preview.html einige Beispiele, darunter auch das Beispiel eines COM-Add-Ins. Dieses verwenden wir als Basis für unser erstes eigenes COM-Add-In für den VBA-Editor.

Der Ordner in der Zip-Datei enthält vier Dateien:

  • myVBEAddin.code-workspace: Datei mit den Workspace-Einstellungen
  • myVBEAddin.twinproj: Datei mit den eigentlichen Projektdaten
  • RegisterAddin32.reg: Datei mit Informationen zum Registrieren des COM-Add-Ins
  • UnregisterAddin32.reg: Datei mit Informationen zum Entfernen der Registrierung des COM-Add-Ins

Die beiden ersten Dateien müssen immer den gleichen Namen aufweisen. Sie öffnen ein Projekt, indem Sie die Datei mit der Dateiendung code-workspace öffnen (gegebenenfalls müssen Sie die Dateiendung noch mit Visual Studio Code verknüpfen).

Dies liefert im nun erscheinenden Visual Studio Code die Ansicht aus Bild 1. Um weitere Dateien müssen Sie sich noch keine Gedanken machen, aktuell reicht eine Projektdatei mit dem Code völlig aus.

Entwicklungsumgebung mit dem Code des COM-Add-Ins für den VBA-Editor

Bild 1: Entwicklungsumgebung mit dem Code des COM-Add-Ins für den VBA-Editor

Einstellungen anpassen

Außerdem finden Sie noch Einstellungen, die wir uns nun ansehen und gegebenenfalls erweitern. Klicken Sie auf den Bereich Settings, finden Sie einige interessante Eigenschaften vor, die wir an dieser Stelle kurz vorstellen wollen (siehe Bild 2):

Einstellungen für das Projekt

Bild 2: Einstellungen für das Projekt

  • Project: Name: Name des Projekts. Erscheint jedoch im Gegensatz zu COM-DLLs nirgends.
  • COM Type Library / ActiveX References: Liste der Verweise des Projekts, die Sie erweitern können.
  • Project: GUID: GUID des Projekts. Diese sollten Sie anpassen, wenn Sie ein neues Projekt auf Basis dieser Vorlage erstellen.
  • Project: Build Output Path: Pfad mit Platzhaltern, der angibt, wo die zu erstellende Datei gespeichert werden soll.
  • Project: Description: Beschreibung des Projekts. Erscheint jedoch im Gegensatz zu COM-DLLs nirgends.

Sie haben nun schon an zwei Stellen gelesen, dass Eigenschaften nirgends erscheinen. Das ist ein Unterschied zu COM-DLLs, bei denen die hier angegebenen Informationen zum Beispiel im Verweise-Dialog erscheinen. Wo und wie Sie den Namen für das COM-Add-In für den VBA-Editor einstellen und wo es dann erscheint, lesen Sie weiter unten.

Code des COM-Add-Ins für den VBA-Editor

Wenn Sie das Modul HelloWorld.twin ansehen, finden Sie eine Klasse vor, welche die Schnittstelle IDTExtensibility2 implementiert. Das bedeutet, dass die Class-Anweisung den Zusatz Implements IDEXTENSIBILITY2 enthält und dass die Klasse alle Elemente dieser Schnittstelle implementieren muss, was bedeutet, dass die in der Klasse enthaltenen Methoden vorliegen müssen (siehe Listing 1).

Class MyVBEAddin
     Implements IDTExtensibility2
     Private _VBE As Object ''VBIDE.VBE
     Private _AddIn As Object ''VBIDE.AddIn
    
     Sub OnConnection(ByVal Application As Object, ByVal ConnectMode As ext_ConnectMode, ByVal AddInInst As Object, _
             ByRef custom As Variant()) Implements IDTExtensibility2.OnConnection
         MsgBox "myVBEAddin.OnConnection"
         Set _VBE = Application
         Set _AddIn = AddInInst
     End Sub
     
     Sub OnDisconnection(ByVal RemoveMode As ext_DisconnectMode, ByRef custom As Variant()) _
             Implements IDTExtensibility2.OnDisconnection
         MsgBox "myVBEAddin.OnDisconnection"
     End SUb
     
     Sub OnAddInsUpdate(ByRef custom As Variant()) Implements IDTExtensibility2.OnAddInsUpdate
         MsgBox "myVBEAddin.OnAddInsUpdate"
     End SUb
     
     Sub OnStartupComplete(ByRef custom As Variant()) Implements IDTExtensibility2.OnStartupComplete
         MsgBox "myVBEAddin.OnStartupComplete"
     End Sub
     
     Sub OnBeginShutdown(ByRef custom As Variant()) Implements IDTExtensibility2.OnBeginShutdown
         MsgBox "myVBEAddin.OnBeginShutdown"
     End Sub
End Class

Listing 1: Aufbau der Klasse des COM-Add-Ins für den VBA-Editor

In den Methoden finden Sie zunächst nur jeweils eine MsgBox-Anweisung, die nur dazu dient, die grundlegende Funktion des COM-Add-Ins für den VBA-Editor zu demonstrieren, solange Sie noch keine echte Funktionalität eingebaut haben.

Außerdem enthält die Klasse die Deklaration zweier Variablen:

Private _VBE As Object ''VBIDE.VBE
Private _AddIn As Object ''VBIDE.AddIn

Diese sind noch mit dem Datentyp Object ausgestattet, damit das Add-In flexibel mit verschiedenen Hosts eingesetzt werden kann. Wir ersetzen dies gleich, benötigen aber zuvor zwei weitere Verweise. Diese fügen wir im Bereich Settings unter COM Type Library / ActiveX References zwei neue Verweise hinzu, nämlich Microsoft Visual Basic For Applications Extensibility 5.3 und Microsoft Office 16.0 Object Library (siehe Bild 3). Anschließend müssen Sie die Änderungen an den Einstellungen speichern, was Sie beispielsweise mit der Tastenkombination Strg + S erledigen können.

Hinzufügen einiger Verweise auf Projektbibliotheken

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

TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar