Warum Du das wissen willst
Nicht jede Access-Version kann alles.
Ab Access 2019 gibt’s moderne Symbole, neue Eigenschaften – und gelegentlich andere Bugs.
Wenn Du gezielt Features nutzt, solltest Du vorher prüfen, welche Version läuft.
Die einfachste Methode: SysCmd + Application.Version
Mit Application.Version
bekommst Du die Office-Version als Text zurück.
Leider nicht ganz eindeutig – „16.0“ steht für 2016, 2019, 2021 und 365.
Deshalb brauchst Du mehr Kontext.
Beispiel:
Debug.Print Application.Version ' Gibt z. B. "16.0" zurück
Hilft nur bedingt. Deshalb brauchst Du Plan B.
Methode 2: Prüfen der Access-Buildnummer
Mit SysCmd(acSysCmdAccessVer)
bekommst Du die interne Access-Version.
Noch besser: Lies die Buildnummer direkt aus Access.Application.Build
.
Beispiel:
Sub ZeigeBuildInfo()
Dim version As String
Dim build As String
version = Application.Version
build = SysCmd(acSysCmdAccessVer)
MsgBox "Access-Version: " & version & vbCrLf & _
"Build: " & build
End Sub
Damit weißt Du zumindest, ob Du bei 16.0 bist – oder darunter.
Methode 3: Registry lesen (für Hartgesottene)
Wenn Du ganz genau wissen willst, ob es Access 2021 ist, musst Du in die Registry gucken.
Das geht per VBA mit der WScript.Shell
.
Beispiel:
Function LeseAccessProduktName() As String
On Error GoTo Fehler
Dim shell As Object
Dim key As String
Dim produkt As String
Set shell = CreateObject("WScript.Shell")
key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access\InstallRoot\ProductName"
produkt = shell.RegRead(key)
LeseAccessProduktName = produkt
Exit Function
Fehler:
LeseAccessProduktName = "Nicht gefunden"
End Function
Das klappt nicht auf jedem System. Vor allem bei 64-Bit Office auf 64-Bit Windows musst Du ggf. in den Wow6432Node-Pfad schauen.
Methode 4: Feature Detection (empfohlen)
Wenn Du auf Nummer sicher gehen willst: Prüfe direkt, ob eine bestimmte Funktion existiert.
Beispiel: Dark Mode verfügbar?
Function IstDarkModeUnterstützt() As Boolean
On Error Resume Next
Dim dummy As Boolean
dummy = Application.GetOption("Use system setting for theme")
IstDarkModeUnterstützt = (Err.Number = 0)
Err.Clear
End Function
Das ist der zuverlässigste Weg.
Nicht hübsch, aber effektiv.
Tabelle: Office-Versionen und Access-Version
Office-Version | Access.Version | Build-Anhaltspunkt |
---|---|---|
Office 2016 | 16.0 | < 10300 |
Office 2019 | 16.0 | ca. 10300–13500 |
Office 2021 | 16.0 | ca. 14500–15300 |
Office 365 | 16.0 | > 15000, variabel |
Mein Fazit: Es geht – aber nicht direkt
Access verrät Dir seine genaue Version nicht freiwillig.
Aber mit ein bisschen Nachdenken kommst Du ran.
Ich prüfe meist den Build – oder versuche es mit Feature Detection.
Wenn Du magst, bau ich Dir eine Funktion, die das alles kombiniert.
So wie ein norddeutscher Taschenmesser-VBA-Snippet.
Macht keinen Lärm – aber funktioniert.
No responses yet