Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
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.
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).
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.
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: