Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

17.9.6 Projekt speichern

17.9.7 Hinzufügen der Funktionen und Menüs

Die folgenden Beschreibungen beziehen sich alle auf das Codemodul des Add-In-Designers. Die prinzipielle Funktionstüchtigkeit haben Sie ja bereits mit dem Meldungsfenster in der Prozedur AddinInstance_OnConnection bewiesen - die entsprechenden Anweisungen können Sie daher nun entfernen und durch wirklich nützlichen Code ersetzen.

Grundgerüst erstellen

Das Programmieren benutzerdefinierter Menüleisten und Schaltflächen mit entsprechenden Funktionen erfordert ein kleines Grundgerüst und für jede Schaltfläche ein wenig Code. Der größte Teil der Arbeit liegt im Entwickeln der eigentlichen Funktionen, die durch die einzelnen Schaltflächen ausgelöst werden.

Grundlage für die Verwendung der Schaltflächen der Menüleiste und das Auslösen der entsprechenden Ereignisprozeduren sind einige modulweit deklarierte Variablen. Sie benötigen für jede Schaltfläche eine Objektvariable des Typs CommandBarButton und für das entsprechende Ereignis eine Objektvariable des Typs CommandBarEvents. Der Kopf des Moduls sieht, wenn Sie nur eine Schaltfläche verwenden, folgendermaßen aus:

Option Explicit

Dim cbb As CommandBarButton
Dim WithEvents evt As CommandBarEvents

Da hier zunächst die Struktur der AddinInstance_OnConnection-Prozedur und der Schaltflächenereignisse beschrieben werden soll, heißen die Variablen einfach dem Typ entsprechend »cbb« für CommandBarButton und »evt« für CommandBarEvents.

Wenn Sie später mehrere Schaltflächen einfügen, benötigen Sie für jede Schaltfläche je eine dieser Objektvariablen. Am besten verwenden Sie als Variablennamen die beiden Präfixe »cbb« und »evt« zuzüglich eines Namens, der die enthaltene Funktion beschreibt (etwa cbbZeilenNummerieren und evtZeilenNummerieren).

Die folgende Ereignisprozedur kennen Sie bereits - sie wird von der VBA-Entwicklungsumgebung aufgerufen, wenn diese geladen wird. Da Sie in den Eigenschaften des Add-In-Designers das anfängliche Ladeverhalten auf Startup eingestellt haben, wird die Prozedur beim nächsten Start der VBA-Entwicklungsumgebung auf jeden Fall aufgerufen (weiter oben beim Erstellen des Toolwindows wurde das Startverhalten auf None eingestellt - dort musste der Anwender das COM-Add-In zunächst über den Add-In-Manager aktivieren).

Die Prozedur erstellt zunächst einen Verweis auf das Objektmodell der VBA-Entwicklungsumgebung. Diesen Verweis benötigen Sie, um dort eine Symbolleiste und die Schaltflächen anlegen zu können; außerdem stellt das Objektmodell die Methoden und Eigenschaften für den Zugriff auf die Module und den enthaltenen Code zur Verfügung. Wenn Sie mehr als eine Symbolleiste anlegen möchten, müssen Sie die entsprechenden Zeilen der Prozedur mehrere Male wiederholen.

Zum Anlegen mehrerer Schaltflächen wiederholen Sie lediglich die letzten fünf Zeilen der Prozedur für jede Schaltfläche einmal - genau wie die beiden weiter oben beschriebenen Deklarationszeilen.

Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
    ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
    ByVal AddInInst As Object, custom() As Variant)

    Dim cbr As CommandBar

    'Verweis auf die aufrufende Anwendung setzen;
    'in diesem Fall die VBA-Entwicklungsumgebung
    Set objVBE = Application

    'Hinzufügen einer temporären Menüleiste
    Set cbr = objVBE.CommandBars.Add("VBETools", msoBarTop, , True)

    'Sichtbarmachen der Menüleiste
    cbr.Visible = True

    'Hinzufügen einer Schaltfläche zur Menüleiste
    Set cbb = cbr.Controls.Add(msoControlButton, , , , True)

    'Anpassen der Eigenschaften der Schaltflächen
    cbb.Style = msoButtonIconAndCaption
    cbb.FaceId = 2950
    cbb.Caption = "Beispielbutton"

    'Ereignis für die Schaltfläche festlegen
    Set evt = objVBE.Events.CommandBarEvents(cbb)

End Sub

Listing 17.23: Diese Prozedur wird beim Öffnen der VBA-Entwicklungsumgebung ausgeführt (vorausgesetzt, die .dll-Datei ist ordnungsgemäß registriert)

Fehlt noch die Ereignisprozedur, die beim Anklicken der Schaltfläche ausgeführt werden soll. Das Anlegen des Prozedurrumpfs ist ein Kinderspiel: Dazu wählen Sie einfach aus dem linken Kombinationsfeld des Codefensters den Eintrag evt aus - Visual Studio legt dann automatisch die Click-Ereignisprozedur an.

Eine solche Prozedur benötigen Sie später für jede anzulegende Schaltfläche. Sobald Sie eine neue Objektvariable des Typs CommandBarEvents erstellt haben, steht der Eintrag im entsprechenden Kombinationsfeld des Codefensters zur Verfügung.

Private Sub evt_Click(ByVal CommandBarControl As Object, _
    handled As Boolean, CancelDefault As Boolean)

    'Testanweisung für das Ereignis
    MsgBox "Die Menü-Schaltfläche funktioniert!"

End Sub

Listing 17.24: Ereignis einer Menüschaltfläche

Zugriff auf die Objekte der VBA-Entwicklungsumgebung

Wenn Sie obiges Grundgerüst mit den in den vorherigen Abschnitten vorgestellten Prozeduren ausstatten, können Sie beliebige Manipulationen der Module und des enthaltenen Codes durchführen. Die meisten zu automatisierenden Vorgänge werden sich dabei auf den Inhalt des aktuellen Codefensters beziehen, das sich sehr leicht referenzieren lässt.

Ein wenig interessanter wird es, wenn weitere Informationen für die Operationen notwendig sind, also wenn Sie beispielsweise einen Assistenten zum Anlegen der MsgBox-Anweisung benötigen oder eine Objektklasse für die Daten einer Tabelle automatisch erstellen lassen möchten - Sie müssen dann eine Benutzungsschnittstelle für die Eingabe der Daten zur Verfügung stellen.

Für einfache Ansprüche reicht möglicherweise die InputBox-Anweisung aus, mit der sich jeweils ein Wert abfragen lässt. In den meisten Fällen ist aber die Verwendung eines Formulars erforderlich.

Natürlich bietet VB auch die Möglichkeit, Formulare zu erstellen und diese in Com-Add-Ins zu verwenden. Leider würde eine Beschreibung der entsprechenden Vorgehensweise nicht nur den Umfang, sondern auch den thematischen Rahmen des Buchs sprengen. Weitere diesbezügliche Informationen erhalten Sie in Fachbüchern zum Thema Visual Basic und auf den entsprechenden Internetseiten.

Die Beispiele zu diesem Kapitel finden Sie auf der Buch-CD in der Datenbank \Kap_17\VBAIDE.accdb.

Nächster Abschnitt:

18 Sicherheit von Access-Datenbanken

© 2006-2008 André Minhorst Alle Rechte vorbehalten.