Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Visual Studio bietet viel mehr Bibliotheken und Möglichkeiten als Access. Dafür ist es auch viel komplizierter. Zum Glück können wir beide Welten kombinieren, zum Beispiel durch Erstellen einer DLL mit Visual Studio, die Funktionen bereitstellt, die nur unter .NET zur Verfügung stehen, die Sie dann von Access aus per VBA referenzieren und nutzen können. Dieser Beitrag zeigt anhand eines Beispiels, wie das gelingt.
Ohne Probleme möglich wird dies dadurch, dass Sie sich die Community Edition von Visual Studio, beispielsweise in der Version 2017, kostenlos herunterladen und diese nutzen können. Den Download finden Sie, wenn Sie bei Google nach Visual Studio 2017 Community suchen.
Nach dem Installieren und Starten von Visual Studio öffnen Sie über den Menüeintrag Datei|Neu|Projekt… den Dialog zum Erstellen eines neuen Projekts. Hier wählen Sie links den Eintrag Installiert|Visual Basic|Windows Desktop aus und in der Mitte dann Klassenbibliothek (.NET Framework) – siehe Bild 1. Geben Sie den Namen des Projekts ein, hier CMD, und wählen Sie den Ordner aus, in dem das Projektverzeichnis erstellt werden soll.
Bild 1: Erstellen einer Klassenbibliothek
DLL als Administrator erstellen
Ein Hinweis vorab: Wenn Sie die DLL erstellen möchten, müssen Sie Visual Studio als Administrator öffnen. Dazu geben Sie beispielsweise Visual Studio im Suchfeld von Windows ein, warten, bis der Eintrag Visual Studio 2017 auftaucht, klicken dann mit der rechten Maustaste auf diesen Eintrag und wählen aus dem nun erscheinenden Kontextmenü den Befehl Als Administrator ausführen aus. Mit einer so gestarteten Instanz von Visual Studio können Sie nun auch DLLs auf dem aktuellen Rechner erstellen und registrieren.
Visual Studio empfängt Sie nun mit der im Codefenster geöffneten Klasse Class1. Sie können hier nun erste Methoden eintragen.
Unser Ziel ist es, eine DLL zu erstellen, die Methoden einer Bibliothek, die nur unter .NET, nicht aber unter VBA zur Verfügung steht. Zu Testzwecken wollen wir zuerst einmal nur eine einfache Funktion über die DLL in VBA bereitstellen, welche nach dem Aufruf eine einfache Meldung anzeigt.
Wir ändern nun erst einmal den Namen der zu verwendenden Klasse, indem wir Class1.vb im Projektmappen-Explorer in CMD.vb umbenennen. Dazu klicken Sie diesen Eintrag im Projektmappen-Explorer mit der rechten Maustaste an und wählen dann den Befehl Umbenennen… aus dem Kontextmenü aus. Geben Sie den neuen Namen ein und bestätigen Sie auch die nun erscheinende Meldung, wodurch Sie alle Verweise auf den vorherigen Namen auf den neuen Namen ändern (siehe Bild 2). In diesem Fall wird auch beispielsweise der Name der Klasse im Klassenmodul angepasst:
Bild 2: Umbenennen aller Verweise entsprechen des neuen Elementnamens
Public Class CMD End Class
Einfache Meldung ausgeben
Um eine einfache Meldung auszugeben, nachdem die entsprechende Methode der Klasse aufgerufen wurde, legen Sie zunächst die gewünschte Sub-Methode an:
Public Class CMD Public Sub MeldungAusgeben() End Sub End Class
Nun heißt der Befehl zum Ausgeben eines Meldungsfensters unter VB.NET etwas anders als unter VBA, also nicht MsgBox. Stattdessen verwendet man unter VB.NET die Methode Show der Klasse MessageBox. Diese wiederum ist in DLL-Klassen nicht standardmäßig als Verweis eingebunden, was wir allerdings schnell nachholen können.
Verweis auf Bibliothek hinzufügen
Dazu rufen Sie mit dem Menübefehl Projekt|Verweis hinzufügen… den Dialog Verweis-Manager auf. Hier klicken Sie links auf Assemblys. Rechts oben im Suchfenster können Sie etwa System.Windows eintippen. Die Einträge werden nach jedem Zeichen aktualisiert, sodass Sie schon bald den Eintrag System.Windows.Forms in der Liste entdecken. Diesen markieren Sie durch einen Haken und schließen den Dialog mit einem Klick auf die Schaltfläche OK (siehe Bild 3).
Bild 3: Hinzufügen eines Verweises für die MessageBox-Klasse
Diese Bibliothek machen wir nun in unserer Klasse verfügbar, indem wir diese mit der Imports-Anweisung ganz oben einfügen:
Imports System.Windows.Forms
Die Methode MeldungAusgeben erweitern wir nun um den Aufruf der Show-Methode der MessageBox-Klasse:
Public Class CMD Public Sub MeldungAusgeben() MessageBox.Show("Dies ist eine Meldung von einer VB-DLL.") End Sub End Class
Außerdem benötigen wir noch eine spezielle Auszeichnung der Klasse CMD, damit diese später unter VBA auch verfügbar ist. Dazu fügen Sie einen weiteren Namespace hinzu:
Imports System.Runtime.InteropServices
Außerdem statten Sie die Klasse mit einer Zusatzinformation aus, welche diese sichtbar macht:
<ClassInterface(ClassInterfaceType.AutoDual)> Public Class CMD ... End Class
DLL-Klassen und -Methoden sichtbar machen
Nun fehlen noch zwei Einstellungen, bevor wir die DLL erstmalig testen können. Um diese vorzunehmen, klicken Sie doppelt auf den Eintrag MyProject im Projektmappen-Explorer. Im Bereich Anwendung des nun erscheinenden Fensters klicken Sie nun auf Assemblyinformationen…. Im nun erscheinenden Dialog Assemblyinformationen finden Sie unten die Option Assembly COM-sichtbar machen, die Sie nun aktivieren. Anschließend können Sie den Dialog wieder schließen (siehe Bild 4).
Bild 4: Einstellen der Eigenschaft Assembly COM-sichtbar machen
Danach bleiben Sie direkt bei den Projekteigenschaften und aktivieren Sie den Bereich Kompilieren. Hier finden Sie ganz unten den Eintrag Für COM-Interop registrieren, den Sie ebenfalls aktivieren. MIt dieser Einstellung sorgen Sie dafür, dass die DLL beim Erstellen sowohl im System registriert wird, als auch dass eine .tlb-Datei erstellt wird, die Sie für die Registrierung auf anderen Systemen nutzen können (siehe Bild 5).
Bild 5: Registrieren für COM-Interop
Erster Test der DLL
Im Anschluss an diesen Schritt wollen wir die DLL zum ersten Mal zum Debuggen starten. Dazu rufen wir den Menübefehl Debugging|Debugging starten auf. Das liefert allerdings nicht das erwartete Ergebnis, denn es erscheint die Fehlermeldung aus Bild 6. Das ist logisch: Eine DLL kann schließlich nicht gestartet werden, sondern stellt nur seine Befehle zur Verfügung.
Bild 6: Fehler beim Debuggen
Also erstellen wir die DLL zunächst, indem wir den Befehl Erstellen|Projektmappe erstellen aufrufen. Dies verläuft ohne Fehlermeldungen, sodass wir uns ansehen, was sich nun getan hat. Als Erstes werfen wir dazu einen Blick in das Verzeichnis bin/Debug des Projektordners (siehe Bild 7). Hier finden wir die DLL und die .tlb-Datei vor, die wichtig für uns sind.
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