VB.NET-DLL für Access programmieren

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.

Erstellen einer Klassenbibliothek

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:

Umbenennen aller Verweise entsprechen des neuen Elementnamens

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).

Hinzufügen eines Verweises für die MessageBox-Klasse

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).

Einstellen der Eigenschaft Assembly COM-sichtbar machen

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).

Registrieren für COM-Interop

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.

Fehler beim Debuggen

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

Schreibe einen Kommentar