Access: Version und Architektur einfach ermitteln

Wenn man für einen Kunden eine neue Anwendung programmieren oder diesem ein Tool wie etwa ein Access-Add-In, ein COM-Add-In oder auch eine Bibliotheksdatenbank zur Verfügung stellen möchte, benötigt man einige grundlegende Informationen zu der verwendeten Access-Version und der Architektur – also ob die 32- oder die 64-Bit-Version im Einsatz ist. Bislang konnte man diese Informationen nur umständlich über mehrere Dialoge ermitteln. Nun bietet Microsoft einige neue Elemente für VBA an, mit denen wir diese Eigenschaften per Einzeiler auslesen kann. In diesem Beitrag stellen wir den bisherigen Weg vor und zeigen auch die neuen VBA-Elemente. Außerdem erstellen wir ein kleines COM-Add-In, mit dem sich diese Informationen ganz einfach über den Datei-Bereich von Access abrufen lassen.

Version und Architektur – wofür benötigt man diese Informationen?

Microsoft Access kommt in verschiedenen Versionen und Architekturen. Gängige Versionen sind zum Beispiel Access 2016, 2019, 2022 und 2024 oder Access aus dem Office 365-Paket. Außerdem gibt es die 32- und die 64-Bit-Architektur.

Wenn man einfach mit der vorliegenden Version programmiert, braucht man der Version und der Architektur normalerweise nur wenige Aufmerksamkeit zu schenken – außer, man programmiert die Windows-API mit den entsprechenden VBA-Funktionen. Wichtiger wird die Kenntnis der Version und der Architektur, wenn man Datenbankanwendungen oder Tools für Kunden entwickelt.

Bezüglich der Access-Version gilt hier, dass man immer die Version des Kunden oder eine frühere Version nutzen sollte. Verwendet man eine neuere Version, baut man eventuell Funktionen ein, die in der älteren Version des Kunden nicht vorhanden sind.

Version und Architektur bei kompilierten Datenbankdateien

Sowohl die Version als auch die Architektur werden wichtig, wenn man eine Anwendung für den Kunden programmiert und ihm diese als kompilierte Version ausliefern möchte. Unter kompilierter Version verstehen wir die als .accde– beziehungsweise .mde-Datei gespeicherte Version, die nur noch ausführbaren Code enthält und keinen Einblick in den VBA-Code mehr erlaubt. Auch die Änderung des Entwurfs der Datenbankobjekte ist hier nicht mehr möglich.

Hier ist wichtig, dass man die Datenbank mit einer Access-Version kompiliert, deren Versionsnummer kleiner oder gleich der Version ist, die der Kunde verwendet. Nutzt der Kunde also Access 2016, müssen wir die Datenbank mit Access 2016 oder älter kompilieren.

Hier kommt auch die Architektur ins Spiel. Wir müssen die Datenbank mit einer Access-Version kompilieren, deren Architektur mit der Access-Version auf dem Zielrechner übereinstimmt. Verwendet der Kunde Access beispielsweise in der 32-Bit-Version, müssen wir mit Access in der 32-Bit-Version kompilieren.

Wenn wir etwa eine für 64-Bit kompilierte .accde-Datei öffnen, erhalten wir die Fehlermeldung aus Bild 1.

Meldung beim Öffnen einer .accde-Datei mit der falschen Access-Architektur

Bild 1: Meldung beim Öffnen einer .accde-Datei mit der falschen Access-Architektur

Verwendung von Bibliotheksdatenbanken

Das Gleiche gilt, wenn Sie eine Bibliotheksdatenbank erstellen, die im einfachsten Fall beispielsweise VBA-Funktionen enthält, aber auch Formulare oder Berichte bereitstellen kann.

Eine solche Bibliotheksdatenbank können wir in das VBA-Projekt einer anderen Access-Datenbank per Verweis einbinden und dann die enthaltenen Funktionen nutzen. Das ist zum Beispiel sinnvoll, wenn man oft verwendete Funktionen oder Objekte nur an einem Ort vorhalten möchte.

Auch dies funktioniert nur, wenn wir eine Access-Version zum Kompilieren verwenden, die genauso alt wie die Zielversion ist oder älter. Auch hier muss die Architektur mit der Architektur der Zielversion übereinstimmen.

Version und Architektur der aktuellen Access-Installation ermitteln

Um die korrekte Version und Architektur für das Erstellen einer Anwendung für den Kunden zu ermitteln, können wir einfach den Kunden fragen. In vielen Fällen weiß er, welche Access-Version installiert ist und welche Architektur vorliegt.

Oft ist dies jedoch nicht der Fall. Dann können wir dem Kunden zeigen, wo er die benötigten Informationen findet. In einer geöffneten Access-Datenbank finden wir diese in aktuelleren Access-Versionen wie folgt:

  • Klick auf den Ribbon-Bereich Datei
  • Wechseln zum Bereich Konto
  • Betätigen der Schaltfläche Info zu Access

Nun erscheint der Info-Dialog aus Bild 2, wo wir sowohl die Access-Version als auch die Architektur auslesen können. Außerdem finden wir hier weitere Informationen wie beispielsweise die eigentliche Version (hier 2606).

Auslesen von Version und Architektur

Bild 2: Auslesen von Version und Architektur

Auslesen von Access-Informationen per VBA

Diese Informationen können wir nun in neueren Access-Versionen auch einfach per VBA ermitteln.

Laut Microsoft sind die Konstanten, die wir nachfolgend vorstellen, ab der Version 2604 von Microsoft 365 enthalten, aber nicht in den Versionen LTSC 2021 oder 2024, weil diese bereits vor dem Feature veröffentlicht wurden.

Auf der Seite von Colin Riddington finden wir außerdem den Hinweis, dass wir diese Konstanten auch in Access 2016 bis 2024 finden (nur in den Click-To-Run-Editionen):

https://www.isladogs.co.uk/sys-cmd-actions/index.html

Neue Konstanten für SysCmd

Die SysCmd-Funktion gibt es schon lange. Sie bietet verschiedene Konstanten an, mit denen wir verschiedene Einstellungen auslesen und auch Elemente der Benutzeroberfläche steuern können, zum Beispiel die Anzeige des Fortschritts in der Statusleiste von Access.

Der Aufruf der Funktion erfolgt einfach über SysCmd mit einem oder mehreren Parameterwerten. Für die Abfrage der Version und der Architektur benötigen wir jedoch immer nur einen Parameter.

Die Parameter finden wir im Objektkatalog, wenn wir unter Klassen den Eintrag AcSysCmdAction auswählen (siehe Bild 3).

Die neuen Elemente im Objektkatalog

Bild 3: Die neuen Elemente im Objektkatalog

Hier die eine Liste der Parameter mit dem entsprechenden Zahlenwert und der Bedeutung:

  • acSysCmdGetMsoBuildNumber (715): MSO.dll-Hauptbuildnummer (Long)
  • acSysCmdGetFullVersion (720): komplette Versionsinfo (String)
  • acSysCmdGetVersion (721): YYMM-Version, zum Beispiel 2604 (Long)
  • acSysCmdGetFullBuildNumber (722): voller Build-String, zum Beispiel 16.0.19922.20000
  • acSysCmdGetChannelName (723): Update-Kanal (String)
  • acSysCmdGetBitness (724): 32-bit/64-bit (String)
  • acSysCmdGetBuildNumber (725): Office-Buildnummer (Long)

Wenn wir nun eine der Informationen auslesen wollen, gelingt dies am einfachsten über den Direktbereich des VBA-Editors. Hier geben wir zum Beispiel zum Ermitteln der Architektur den folgenden Befehl ein:

Debug.Print SysCmd(acSysCmdGetBitness)
32-bit

Mit den übrigen Konstanten holen wir die weiteren Informationen:

Access im Unternehmen

Unser exklusives Angebot für Dich!

Access im Unternehmen
13,25 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →