Wie erkenne ich per VBA, ob Access 2021 oder eine ältere Version verwendet wird?

Warum Du das wissen willst

Nicht jede AccessVersion 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-VersionAccess.VersionBuild-Anhaltspunkt
Office 201616.0< 10300
Office 201916.0ca. 10300-13500
Office 202116.0ca. 14500-15300
Office 36516.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.

Kategorien:

Schlagwörter: