.NET-Klassen und Formulare in Access nutzen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Das .NET-Framework liefert eine Menge interessanter Klassen, die Sie unter Access gut gebrauchen können. Doch nicht nur das: In Form einer COM-DLL können Sie nicht nur Visual Basic 2008-Klassen, sondern auch damit erstellte Elemente der Benutzeroberfläche in Access-Anwendungen integrieren. Und das Beste ist: Das funktioniert auch mit der kostenlosen Express Edition von Visual Basic 2008.

Wenn Sie unter VBA schon einmal einen Verweis auf eine externe Bibliothek gesetzt und deren Methoden und Eigenschaften genutzt haben, kennen Sie zumindest schon einmal die andere Seite von dem, was Sie in den folgenden Abschnitten lernen. Dort erstellen Sie nämlich genau eine solche Bibliothek, die Sie von Access aus referenzieren und deren Funktionen Sie dort unter VBA nutzen können. Ãœblicherweise dürften Sie bisher – wenn überhaupt – auf die Klassenbibliotheken von Anwendungen wie Word, Excel oder Outlook zugegriffen haben, um diese Anwendungen zu automatisieren; vielleicht haben Sie auch schon mal eine Klasse eines Drittanbieters benutzt, um den Funktionsumfang einer Ihrer Datenbanken zu erweitern. Ein gutes Beispiel ist etwa eine Komponente, die eine Anwendung um Funktionen zum Versenden von E-Mails erweitert.

Warum nun sollten Sie selbst solche Klassen herstellen und von Access aus einsetzen Nun: Das .NET Framework 3.5 liefert eine unüberschaubare Menge an Klassen, die Sie auf diese Weise in Ihre Access-Anwendungen integrieren können.

Projekt erstellen

Der erste Schritt beim Bau einer DLL, die in Access als Verweis eingebunden werden kann, ist das Anlegen eines passenden Visual Basic-Projekts. Dies erledigen Sie in Visual Studio über den Menüeintrag Datei|Neues Projekt. Im folgenden Dialog namens Neues Projekt wählen Sie den Eintrag Klassenbibliothek aus und geben den Namen Ihrer Wahl an – beispielsweise AccessDLL. Um den Speicherpfad brauchen Sie sich noch nicht zu kümmern, den legen Sie später fest, wenn Sie sich entschlossen haben, dass dieses Projekt auch speichernswert ist.

Visual Studio empfängt Sie im Anschluss mit der leeren Klasse Class1, die es nun zu füllen gilt (siehe Bild 1). Zunächst aber geben Sie der Klasse einen sinnvolleren Namen wie etwa Beispielklasse. Dies erledigen Sie wahlweise im Projektmappen-Explorer oder im Eigenschaftsfenster – der Name im Codefenster ändert sich automatisch.

missing image file

Bild 1: Visual Studio mit einer leeren VB-Klasse

Für einen ersten Funktionstest fügen Sie der Klasse einfach eine kleine Funktion hinzu, die nichts anderes erledigt, als beim Aufruf eine Zeichenkette zurückzuliefern. Die komplette Klasse sieht dann so aus:

Public Class Beispielklasse
Public Function Beispielfunktion() As String
    Beispielfunktion = "Funktioniert!"
End Function
End Class

Sie könnten die DLL nun durch den Menüeintrag Erstellen|AccessDLL erstellen erzeugen, aber das würde nichts nUtzen: Sie liefert keinerlei Informationen nach außen, die auf die enthaltenen Elemente – hier die Funktion Testfunktion – hinweisen. Dazu brauchte man eine .tlb-Datei, die sogenannte Type Library, die alle in der DLL enthaltenen Klassen und ihre Elemente auflistet und für das VBA-Projekt, in das sie eingebunden werden soll, bereitstellt. Bevor Sie dies erledigen, speichern Sie das Projekt mit Datei|Projekt schließen (siehe Bild 2).

missing image file

Bild 2: Speichern des Projekts unter dem gewünschten Projektnamen

Anschließend sind drei zusätzliche Handgriffe nötig, von denen Sie zwei in der Entwicklungsumgebung und einen manuell durchführen müssen: Zunächst müssen Sie erreichen, dass Visual Studio neben den drei Dateien AccessDLL.dll, AccessDLL.pdb und AccessDLL.xml, die Sie nach dem Erstellen mit Erstellen|AccessDLL erstellen im Verzeichnis AccessDLL\bin\Release finden, noch eine zusätzliche Datei namens AccessDLL.tlb hinzufügt. Dabei hilft das Tool regasm.exe, das auch beim Registrieren der DLL auf anderen Rechnern nützliche Dienste leistet. Rufen Sie es auf, indem Sie folgende Anweisung beispielsweise im Ausführen…-Dialog oder in der Eingabeaufforderung von Windows eingeben:

<Pfad>\regasm.exe <Pfad>\<DLLName>.dll
/tlb

Die Datei regasm.exe finden Sie im jeweiligen Framework-Verzeichnis, das sich in der Regel unter c:\Windows\Microsoft.NET\Framework\vx.x befindet. Ã-ffnen Sie dann das Projekt wieder und klicken Sie im Projektmappen-Explorer auf den Eintrag Beispielklasse.vb. Stellen Sie in den Eigenschaften des Projekts den Eintrag COM-sichtbar auf True ein; dies macht sich im Code der Klasse durch das automatische Voranstellen von <Microsoft.VisualBasic.ComClass()> bemerkbar.

Schließlich müssen Sie noch eine weitere Eigenschaft einstellen – und zwar in den Projekteigenschaften. Diese öffnen Sie über den Menüeintrag Projekt|AccessDLL-Eigenschaften… Wechseln Sie dort auf die Registerseite Anwendung und klicken Sie auf die Schaltfläche Assemblyinformationen… (siehe Bild 3). Im nun erscheinenden Fenster aktivieren Sie die Option Assembly COM-sichtbar machen (siehe Bild 4).

missing image file

Bild 3: Mit einem Klick auf die Schaltfläche Assemblyinformationen …

missing image file

Bild 4: … öffnen Sie diesen Dialog und aktivieren die Option Assembly COM-sichtbar machen.

Nun können Sie das Projekt kompilieren und testen. Dazu öffnen Sie den VBA-Editor einer Access-Datenbank und legen im Verweise-Dialog einen Verweis auf die nun dort erscheinende Bibliothek AccessDLL an (siehe Bild 5). Es fehlt nun nur noch der Zugriff auf die neu erstellte DLL. Dieser erfolgt auf herkömmliche Weise – nach dem Deklarieren und Instanzieren der Klasse können Sie seine einzige Funktion ganz einfach aufrufen.

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