Pfad zu Access ermitteln

AccessVBA

Wird z. B. eine andere Access-Datenbank aus einer bestehenden Access-Datenbank aufgerufen, ist es nötig, den Pfad zu Access (msaccess.exe) zu kennen.
Um den Aufruf dieser weiteren Datenbank über Shell zu realisieren, muss Access (inkl. Pfad) plus Pfad der anderen Datenbank in einem String übergeben werden.
Problem:
Die unterschiedlichen Installationen von Microsoft Office.
Microsoft Office wird standardmäßig in den Ordner C:\Program Files\Microsoft Office XX installiert, wobei XX für die Versionsnummer steht (z. B. Office 2007 = 12, 2010 = 14, 2013 = 15). Diese Problem könnte auch schnell gelöst werden, indem einmalig der Pfad in Access hinterlegt wird.
Ist nun aber z. B. diese Datenbank auch mit anderen MS-Access-Versionen kompatibel (alle neuen Office-Versionen, 2007 – 2013), müssten hierfür schon drei Einträge hinterlegt werden.

Dazu kommt ein weiteres Problem. Erst ab Office 2013 ist eine 64-Bit-Version verfügbar. Heißt: Neben der Prüfung der Versionsnummer, müssten Sie auch noch überprüfen, welche Bit-Version des Office-Paketes installiert ist.
Die Lösung:
Bevor der Aufruf der anderen Datenbank stattfinden, lassen Sie Access selbst überprüfen, in welchem Verzeichnis Access installiert ist.
Nutzen Sie hierfür unter VBA den Code: SysCmd(acSysCmdAccessDir)
Dieser Befehl gibt das aktuelle Verzeichnis von Access wider. Um wie oben im Beispiel beschrieben eine andere Datenbank öffnen zu können, fehlt diesem Befehl jedoch noch die Endung msaccess.exe.
Fügen Sie diese einfach wie folgt an:

strAccessPath = SysCmd(acSysCmdAccessDir) & "msaccess.exe"