Office-VBA per COM-DLL mit VB.NET erweitern

VBA ist, formulieren wir es einmal freundlich, seit einiger Zeit nicht mehr aktualisiert worden. Hier und da gibt es kleine Anpassungen in den Objektbibliotheken, aber der Sprachumfang an sich hat keine großen Schritte gemacht. Auch VB.NET bringt nicht täglich neue Sprachkonstrukte hervor. Aber dafür gibt es beispielsweise zahllose Erweiterungen in Form von NuGet-Paketen, die man leicht in einem VB.NET-Projekt verfügbar machen kann. Aus VB.NET-Projekten kann man aber auch eine COM-DLL erzeugen, die wir wiederum von einem VBA-Projekt aus referenzieren und nutzen können. Und somit können wir auch den Funktionsumfang von Word, Excel, Outlook, Access und Co. erweitern. Dieser Artikel zeigt die Grundlagen zur Erstellung eines COM-Add-Ins, das wir von unseren Office-Anwendungen aus nutzen können.

Voraussetzung: Visual Studio .NET

Die einzige Voraussetzung, die wir neben der zu erweiternden Office-Anwendung brauchen, ist eine Version von Visual Studio .NET. Microsoft bietet eine für viele Fälle kostenlos nutzbare Version an, die Du beispielsweise hier findest:

https://visualstudio.microsoft.com/de/vs/community/

Visual Studio als Administrator öffnen

Wenn wir die geplante DLL erstellen und testen wollen, benötigen wir in der Regel Administrator-Rechte. Dazu öffnen wir Visual Studio direkt als Administrator. Dazu klicken wir mit der rechten Maustaste auf das Visual Studio-Icon und wählen dort den Eintrag Als Administrator ausführen aus. Die anschließende Meldung bestätigen wir.

DLL-Projekt erstellen

Anschließend erstellen wir ein DLL-Projekt. Aus dem Startbildschirm von Visual Studio wählen wir dazu den Eintrag Neues Projekt erstellen aus. Im Dialog Neues Projekt erstellen finden wir einige Auswahlfelder, mit denen wir die Auswahl aus Bild 1 treffen (Visual Basic, Windows, Bibliothek) und dann den Eintrag Klassenbibliothek (.NET Framework) selektieren.

Auswahl des Typs für das neue Projekt

Bild 1: Auswahl des Typs für das neue Projekt

Im nächsten Dialog namens Neues Projekt konfigurieren geben wir einen Projektnamen ein, in diesem Fall COMDLLBeispiel.

Außerdem wählen wir den Speicherort für das Projekt aus und legen als Framework den Eintrag .NET Framework 4.7.2 fest (siehe Bild 2).

Eingabe von Projektname und Speicherort

Bild 2: Eingabe von Projektname und Speicherort

Visual Studio nimmt sich nun einige Augenblicke Zeit, um das Projekt anzulegen und dieses anzuzeigen. Das Ergebnis sehen wir in Bild 3. Wir finden im Projektmappen-Explorer eine neue Projektmappe mit einer Klasse namens Class1.vb vor. Diese wollen wir als Erstes umbenennen.

Das neue Projekt in Visual Studio

Bild 3: Das neue Projekt in Visual Studio

Umbenennen der Klasse

Das ist an sich kein Hexenwerk, wir wollen nur kurz klären, wo wir den Namen dieser Klasse sehen werden. Wenn wir die COM-DLL später im VBA-Editor einer Office-Anwendung deklarieren und referenzieren, geschieht das in der folgenden Form:

Dim obj As [Assemblyname].[Klassenname]

Neben dem Assemblynamen sollten wir also auch den Klassennamen so auswählen, dass wir nachher auch erkennen, was diese Klasse für Funktionen liefert.

In unserem Beispiel spielt das allerdings keine große Rolle und wir verwenden einfach Beispielklasse. Diesen Wert tragen wir im Projektmappen-Explorer Beispielklasse.vb statt Class1.vb ein.

Visual Studio fragt nach, ob wir auch die Verweise auf diese Elemente umbenennen möchten, was wir mit Ja beantworten (siehe Bild 4). Dadurch wird auch direkt der Klassenname im Code geändert:

Umbenennen von Datei und Klasse

Bild 4: Umbenennen von Datei und Klasse

Public Class Beispielklasse
End Class

Vorbereitungen in den Projekteigenschaften

Damit kommen wir zu den anzupassenden Einstellungen in den Projekteigenschaften. Diese öffnen wir mit einem Doppelklick auf den Eintrag My Project im Projektmappen-Explorer.

Hier können wir nun, falls gewünscht, noch den Namen der Assembly anpassen – dieser Name erscheint später im Verweise-Dialog des VBA-Editors (siehe Bild 5). Wichtiger ist jedoch ein Klick auf die Schaltfläche Assemblyinformationen…, mit dem wir einen weiteren Dialog öffnen.

Einstellungen in den Projekteigenschaften

Bild 5: Einstellungen in den Projekteigenschaften

Dieser heißt Assemblyinformationen und hier aktivieren wir die Option Assembly COM-sichtbar machen (siehe Bild 6). Ohne diese Einstellung wird die COM-DLL später gar nicht im Verweise-Dialog angezeigt.

Die Assemblyinformationen

Bild 6: Die Assemblyinformationen

Danach schließen wir den Dialog wieder und aktivieren in den Projekteigenschaften den Bereich Kompilieren. Hier aktivieren wir die Option Für COM-Interop registrieren (siehe Bild 7).

Registrieren für COM-Interop

Bild 7: Registrieren für COM-Interop

Verweis bereits verfügbar

Damit können wir das Projekt nun bereits erstellen. Wir wählen dazu den Menüeintrag COMDLLBeispiel erstellen aus (oder die Tastenkombination Strg + B) – siehe Bild 8.

Erstellen des Projekts

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar