Bisher haben wir COM-DLLs entweder mit Visual Studio 6 erstellt oder mit Visual Studio .NET. Mit twinBASIC kommt nun eine weitere Möglichkeit hinzu. twinBASIC ist noch in der Entwicklung, aber Sie können damit durchaus bereits lauffähige COM-DLLs bauen. Dieser Beitrag zeigt, wie Sie das Beispiel-COM-DLL des Entwicklers von twinBASIC, Wayne Philips, verwenden und wie Sie eigene Funktionen hinzufügen.
Vorbereitungen zum Erstellen von COM-DLLs mit twinBASIC
Den Großteil der Vorbereitungen für den Einsatz von twinBASIC haben wir im Beitrag twinBASIC – VB/VBA mit moderner Umgebung (www.access-im-unternehmen.de/1303) beschrieben. Hier erfahren Sie, wie Sie die Entwicklungsumgebung VS Code installieren und die benötigte Erweiterung twinBASIC hinzufügen. Außerdem haben wir dort ein kleines Beispielprojekt demonstriert.
Aktuelle Versionen
Neben der Version, die wir für die Beschreibungen in diesem Beitrag genutzt haben, wird twinBASIC aktuell sehr schnell weiterentwickelt.
Da es für uns Access-Entwickler sehr ungewohnt ist, dass eine Entwicklungsumgebung weiterentwickelt wird (und das auch noch schnell), weisen wir hier explizit darauf hin, dass es aktuelle Versionen und Informationen an folgenden Orten gibt:
- Die aktuellen Downloads finden Sie unter https://twinbasic.com.
- Bugs et cetera können Sie hier melden oder auch einsehen: https://github.com/WaynePhillipsEA/twinbasic/issues
Auf https://twinbasic.com finden Sie auch einige Beispiele, unter anderem das hier als Grundlage verwendete Beispiel für eine ActiveX-DLL.
Beispiel herunterladen
Die zum Zeitpunkt der Erstellung dieses Beitrags verwendete Version des Beispiels finden Sie wie gewohnt im Download zu diesem Beitrag, aktuellere Versionen gegebenenfalls unter dem oben genannten Link.
Wenn Sie die Zip-Datei heruntergeladen haben, finden Sie darin zwei Dateien – eine mit der Dateiendung .code-workspace und eine mit der Dateiendung .twinproj. Um das Projekt zu öffnen, klicken Sie doppelt auf die Datei mit der Dateiendung .code-workspace (gegebenenfalls müssen Sie die Dateiendung noch mit dieser Anwendung verknüpfen).
Dies öffnet den Arbeitsbereich, der sowohl das Projekt aus der .twinproj-Datei anzeigt als auch alle notwendigen Einstellungen enthält. Das Ergebnis sieht nach einem Doppelklick auf den Eintrag HelloWorld.twin im Ordner Sources wie in Bild 1 aus.
Bild 1: COM-Add-In-Projekt in VS Code
Wir sehen hier eine Klasse namens MyTestLibrary mit einer einzigen öffentlich deklarierten Funktion namens MultipleByTen.
Projekt erstellen
Wir schauen uns zunächst an, wie wir die COM-DLL zum Laufen bringen. Dazu brauchen Sie lediglich auf die Schaltfläche Build im Bereich TWINBASIC zu klicken.
Dies erzeugt die .dll-Datei im Ordner Build des Projektordners und legt gleichzeitig die benötigten Einträge in der Registry an – dazu später mehr.
COM-DLL einbinden
Wir öffnen eine Access-Datenbank und starten den VBA-Editor. Hier rufen wir mit dem Menü-Eintrag –Extras|Verweise den Verweise-Dialog auf. Dieser bietet unter dem Namen MyTestLibrary project einen neuen Eintrag zum Einbinden der DLL an (siehe Bild 2). Diesen aktivieren wir durch Platzieren eines Hakens im entsprechenden Kontrollkästchen.
Bild 2: Verweis auf die DLL
Befehle der COM-DLL ausprobieren
Danach können Sie im VBA-Editor folgende Prozedur anlegen:
Public Sub TestCOMDLL() Dim obj As MyTestLibrary Set obj = New MyTestLibrary Debug.Print obj.MultiplyByTen(10) End Sub
Rufen Sie die Prozedur auf, liefert diese mit dem Wert 100 das korrekte Ergebnis. Auch IntelliSense funktioniert sehr gut mit der Funktion (siehe Bild 3).
Bild 3: IntelliSense mit der COM-DLL
Late Binding
Das Erstellen funktioniert auch mit Late Binding. Allerdings müssen Sie die Bibliothek zusätzlich zur Klasse angeben. Das sieht dann beispielsweise wie folgt aus:
Public Sub TestCOMDLL1() Dim obj As Object Set obj = CreateObject( "MyTestLibraryProject.MyTestLibrary") Debug.Print obj.MultiplyByTen(10) End Sub
Geben Sie die Bibliothek nicht an, führt dies zu dem Fehler aus Bild 4.
Bild 4: Fehler beim Versuch, die Klasse per Late Binding zu nutzen