title image


Smiley Re: A97: Wie öffne ich ein Add-In per VBA
Bekomme immer so nen Newsletter ... Vielleicht hilft dir das hier :

-----------------------------------------

Sicherlich wissen Sie, dass Sie eine Access-Datenbank, in der Sie spezielle Lösungen oder Hilfsroutinen realisiert haben, global in Access einbinden können, so dass der Aufruf über das Menü Extras-Add-Ins- möglich ist. Einsetzen können Sie dazu jede Access-Datenbank (MDA, MDE) und jedes Projekt (ADP). Aus Sicht von Access handelt es sich dabei um so genannte "Menü-Add-Ins".



Damit sich ein solches Add-In über Extras-Add-Ins-Add-In-Manager überhaupt installieren lässt, muss die Datenbank eine spezielle Tabelle "USysRegInfo" beinhalten. In dieser Tabelle sucht Access nach den benötigten Informationen, um das Add-In in das Menü einbinden und die damit verbundene Funktion starten zu können. Diese Informationen entsprechen Einträgen in der Registry. Die entsprechenden Registry-Einträge generiert Access, wenn Sie das Add-In installieren und löscht sie wieder, wenn Sie das Add-In deinstallieren. Beim Programmstart sucht Access in der Registry nach entsprechenden Add-In-Einträgen und bindet die gefundenen Dateien dann unter Extras-Add-Ins ein.



Um ein kleines Beispiel aufzubauen, legen Sie zunächst eine leere Datenbank mit dem Namen "MeinErstesAddIn.mdb" an. In dieser Datenbank erstellen Sie ein Formular "AddIn-Test", das lediglich ein Bezeichnungsfeld mit dem Hinweis "Dies ist ein Test..." und eine Schaltfläche "btnFertig" beinhaltet. Der Ereignisprozedur "Beim Klicken" dieser Schaltfläche weisen Sie die folgenden Anweisungen zu:



Private Sub btnFertig_Click()



On Error Resume Next

DoCmd.Close acForm, Me.Name, acSavePrompt



End Sub





In das Formular integrieren Sie dann später die Funktionen ein, die das Add-In zur Verfügung stellen soll. Neben dem Formular "AddIn-Test" muss in der Datenbank noch ein globales Modul "modAddInTest" angelegt werden. In diesem Modul geben Sie die Funktion "TestAddInAnzeigen()" ein. Diese Funktion ist notwendig, um das Formular später nach Anwahl des Menüs Extras-Add-Ins-Test-Add-In zu öffnen:



Function TestAddInAnzeigen()



On Error Resume Next

DoCmd.OpenForm "AddIn-Test"

If Err 0 Then

Beep

MsgBox "Fehler beim Öffnen des Formulars...", _

vbOKOnly + vbInformation, "!!! Fehler !!!"

End If



End Function



Der Name dieser Funktion ist Bestandteil der Informationen, die in "USysRegInfo" abgelegt werden müssen. Dazu aber in der nächsten Ausgabe mehr. Testen Sie nun den Aufruf des Formulars, indem Sie im Testfenster/Direktbereich folgende Eingabe tätigen:



? TestAddInAnzeigen()



Ein Klick auf die Schaltfläche Fertig sollte das Formular dann wieder schließen. Damit sind zunächst alle Vorbereitungen abgeschlossen



Nachdem wir die Basisobjekte eines kleinen Test-Add-Ins angelegt haben, folgt nun die Erläuterung des Aufbaus und der Einbindung der Tabelle "USysRegInfo". Sie legen die Tabelle "USysRegInfo" wie jede andere "normale" Tabelle an, indem Sie im Datenbankfenster auf "Tabellen" umschalten und dann auf die Schaltfläche Neu klicken. Die Tabelle enthält folgende Felder:



Feldname Datentyp Feldgrößen

-------------------------------------

Subkey Text 255

Type Zahl Long Integer

ValName Text 255

Value Text 255



Legen Sie diese Felder nun an und sichern Sie die Tabelle dann als "USysRegInfo". Wenn Access beim Speichern den fehlenden Primärschlüssel bemängelt, klicken Sie auf die Schaltfläche Nein - ein Primärschlüssel ist hier nicht notwendig.



Unter Umständen wird die Tabelle "USysRegInfo" anschließend nicht im Datenbankfenster angezeigt. Das hängt damit zusammen, dass Access so genannte "Systemobjekte" grundsätzlich ausblendet. Dazu zählen beispielsweise Tabellen, deren Namen mit "USys" oder "MSys" beginnen. Um die Tabellen einzublenden, wählen Sie das Menü Extras-Optionen an, wechseln auf die Registerkarte "Ansicht", aktivieren dort im Bereich "Anzeigen" die Option "Systemobjekte" und klicken auf Ok. Im Datenbankfenster sehen Sie nun neben "USysRegInfo" zahlreiche "MSys..."-Tabellen - das sind spezielle Systemtabellen, die Access zur Verwaltung der Datenbank benötigt.



Die Tabelle "USysRegInfo" muss für den Add-In-Manager immer vier Datensätze bereitstellen, die im Feld "Subkey" einen der folgenden beiden Einträge enthalten:



HKEY_LOCAL_MACHINE\Menu Add-ins\Test-Add-In



oder



HKEY_CURRENT_ACCESS_PROFILE\Menu Add-ins\Test-Add-In



Der Anfang dieser Schlüssel legt fest, wo die Registry-Einträge angelegt werden und bestimmt damit die Verfügbarkeit des Add-Ins. "HKEY_LOCAL_MACHINE" legt fest, dass das Add-In für alle Anwender verfügbar ist, "HKEY_CURRENT_ACCESS_PROFILE" sorgt dafür, dass das Add-In nur für den Anwender verfügbar ist, der es aktuell über den Add-In-Manager installiert. Unser kleines Beispiel-Add-In soll sich jeder Anwender nur bei Bedarf installieren können, so dass wir mit "HKEY_CURRENT_ACCESS_PROFILE" arbeiten. Den Abschluss dieser Einträge - "Test-Add-In" - bildet immer der Name des zu installierenden Add-Ins, so wie er im Menü Extras-Add-Ins angezeigt werden soll.



Im folgenden beschreiben wir den weiteren Inhalt der vier Datensätze jeweils einzeln:



1. Datensatz

Hier hat zusätzlich lediglich das Feld "Type" den Inhalt "0" - alle anderen Felder bleiben leer! Dadurch weiß der Add-In-Manager, wo die im folgenden spezifizierten Einträge in der Registry abzulegen sind.



2. Datensatz

Das Feld "Type" hat hier den Inhalt "1" und legt damit fest, dass dieser Eintrag weitere Details zum Add-In festlegt; in diesem Fall handelt es sich dabei um die Startroutine. Dazu enthält das Feld "ValName" den Ausdruck "Expression" und das Feld "Value" den Eintrag "=TestAddInAnzeigen()". Achtung! Wenn Sie das Gleichheitszeichen weglassen, versucht Access statt der Funktion ein Makro gleichen Namens zu starten - das Gleichheitszeichen ist also immer dann notwendig, wenn eine VBA-Funktion aufgerufen werden soll. Andererseits können Sie auch ein Makro starten, indem Sie das Gleichheitszeichen weglassen.



3. Datensatz

Das Feld "Type" hat hier den Inhalt "1" und legt damit fest, dass dieser Datensatz den Speicherort des Add-Ins enthält. Das Feld "ValName" beinhaltet den Ausdruck "Library" und das Feld "Value" den Eintrag "|ACCDIR\MeinErstesAddIn.mda". Die Variable "|ACCDIR\" steht stellvertretend für das Verzeichnis, in dem sich MSACCESS.EXE befindet und in dem normalerweise Add-Ins abgelegt werden. Im Anschluss daran wird der Name der Add-In-Datenbank angegeben.



4. Datensatz

Über den vierten Datensatz legen Sie fest, wo das Add-In angezeigt/verfügbar gemacht werden soll. Dazu enthält das Feld "Type" den Wert "4", das Feld "ValName" den Ausdruck "Version" und das Feld "Value" eine der folgen Zahlen:



1 - Nur in Datenbanken (MDBs) verfügbar

2 - nur in Projekten (ADPs) verfügbar

3 - in Datenbanken und Projekten (MDBs/ADPs) verfügbar



Für unser kleines Beispiel geben wir "3" an, damit das Add-In überall verfügbar ist. Der Wert von "4" für das Feld "Type" bedeutet übrigens, dass die Informationen als numerischer Wert (DWord) abgelegt werden sollen.



Wenn Sie "USysRegInfo" angelegt und mit entsprechenden Inhalten gefüllt haben, beenden Sie Access, ändern Sie die Erweiterung der Datenbank in "MDA" um (am besten mit einer Kopie arbeiten) und kopieren/verschieben Sie die MDA-Datei in das Office-Verzeichnis der Office-Installation (zum Beispiel "C:\Programme\Microsoft Office\Office"). Alternativ dazu können Sie auch Extras-Datenbank-Dienstprogramme-MDE-Datei erstellen anwählen, um eine geschützte MDE anzulegen, die Sie dann in das Office-Verzeichnis kopieren/verschieben.



Über Extras-Add-Ins-Add-In-Manager lässt sich nun das neue Add-In installieren. Wird das Add-In hier nicht angezeigt, klicken Sie auf die Schaltfläche Hinzufügen und lokalisieren die betreffende MDA-/MDE-Datei über die Suchen-Funktion. Der Start des Add-Ins erfolgt dann zukünftig über Extras-Add-In-.

-----------------------------



HTH



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: