Wer mit Microsoft Access, Excel oder anderen Office-Anwendungen arbeitet, kennt das Problem: Beim Ăffnen einer Datei auf einem neuen Rechner oder Laufwerk erscheint die Sicherheitswarnung – „Makros wurden deaktiviert“ oder „Unsicherer Speicherort“. Besonders bei Access-Frontends mit VBA oder Formular-Logik ist das ein echter Showstopper fĂŒr Anwender:innen.
Die Ursache: Die Datei liegt nicht in einem sogenannten Trusted Location – also einem von Office als sicher eingestuften Pfad. Diese Einstellung kann ĂŒber die BenutzeroberflĂ€che im Trust Center vorgenommen werden – oder automatisiert per VBA ĂŒber die Windows-Registry.
Warum das wichtig ist
Wenn Du eigene Access-Frontends verteilst, ist es nicht zumutbar, dass Deine Nutzer:innen manuell ĂŒber die Optionen in Access den Pfad als vertrauenswĂŒrdig deklarieren mĂŒssen. Automatisiert kannst Du das direkt beim ersten Start prĂŒfen – und wenn nötig, in der Registry ergĂ€nzen.
Wichtig: Trusted Locations gelten benutzerspezifisch. Sie werden pro Office-Version in der Registry unter HKEY_CURRENT_USER
gespeichert – und mĂŒssen daher ggf. pro Benutzer eingerichtet werden.
Wo speichert Access seine Trusted Locations?
Die Registry-Pfade variieren je nach Office-Version und Anwendung. Beispiel fĂŒr Access 365 / 2016 / 2019:
HKEY_CURRENT_USER\Software\Microsoft\Office\<Version>\Access\Security\Trusted Locations
Beispiele:
- Office 2016 =
16.0
- Office 2013 =
15.0
- Office 2010 =
14.0
Unter diesem SchlĂŒssel befinden sich dann Location0
, Location1
usw., in denen Path
und AllowSubfolders
definiert sind.
Beispiel: Trusted Location automatisch setzen per VBA
Mit folgendem Code kannst Du prĂŒfen, ob der aktuelle Pfad bereits eingetragen ist – und ihn ggf. als Trusted Location ergĂ€nzen:
Public Sub SetzeTrustedLocation(Optional OrdnerPfad As String)
Dim WshShell As Object
Dim regPath As String
Dim keyIndex As Integer
Dim version As String
Dim PfadVorhanden As Boolean
Dim i As Integer
Dim keyTest As String
' Aktuellen Ordner verwenden, wenn nichts ĂŒbergeben
If OrdnerPfad = "" Then
OrdnerPfad = CurrentProject.Path & "\"
ElseIf Right(OrdnerPfad, 1) <> "\" Then
OrdnerPfad = OrdnerPfad & "\"
End If
' Office-Version ermitteln (Access.Application.Version liefert z. B. "16.0")
version = Application.Version
regPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & version & "\Access\Security\Trusted Locations\"
Set WshShell = CreateObject("WScript.Shell")
' PrĂŒfen, ob Pfad schon eingetragen ist
PfadVorhanden = False
For i = 0 To 99
On Error Resume Next
keyTest = WshShell.RegRead(regPath & "Location" & i & "\Path")
On Error GoTo 0
If keyTest = "" Then Exit For
If StrComp(keyTest, OrdnerPfad, vbTextCompare) = 0 Then
PfadVorhanden = True
Exit For
End If
Next i
If PfadVorhanden Then
MsgBox "Der Pfad ist bereits als vertrauenswĂŒrdig eingetragen:" & vbCrLf & OrdnerPfad, vbInformation
Else
' Neuen Key anlegen
keyIndex = i
With WshShell
.RegWrite regPath & "Location" & keyIndex & "\Path", OrdnerPfad, "REG_SZ"
.RegWrite regPath & "Location" & keyIndex & "\AllowSubfolders", 1, "REG_DWORD"
.RegWrite regPath & "Location" & keyIndex & "\Description", "Automatisch gesetzt", "REG_SZ"
End With
MsgBox "Neuer vertrauenswĂŒrdiger Speicherort hinzugefĂŒgt:" & vbCrLf & OrdnerPfad, vbInformation
End If
End Sub
Anwendung
Du kannst diesen Code beim Start Deiner Anwendung aufrufen – z. B. im Autoexec-Makro oder beim Ăffnen des Startformulars:
Call SetzeTrustedLocation
Oder gezielt fĂŒr ein bestimmtes Verzeichnis:
Call SetzeTrustedLocation("C:\Daten\AccessFrontend")
EinschrÀnkungen und Hinweise
- Der Code funktioniert nur, wenn der Benutzer Schreibrechte auf die Registry hat.
- Ănderungen werden sofort wirksam, allerdings muss Access eventuell neu gestartet werden, um die Vertrauensstellung anzuerkennen.
- Bei Terminalserver-Umgebungen oder Roaming-Profilen sollte die Lösung mit der IT abgestimmt werden.
Fazit
Mit wenigen Zeilen VBA-Code kannst Du sicherstellen, dass Dein Access-Frontend beim ersten Start ohne Sicherheitswarnung geöffnet wird – ganz ohne manuelle Eingriffe der Benutzer:innen. Das verbessert nicht nur die User Experience, sondern reduziert auch Support-Anfragen erheblich.
Wenn Du Access-Anwendungen verteilst, lohnt sich dieser Schritt in jedem Setup-Prozess.
Du brauchst Hilfe bei der Automatisierung, Installation oder bei gröĂeren Access-Deployments mit SQL Server, mehreren ArbeitsplĂ€tzen oder Versionierung? Dann sprich mich an – ich unterstĂŒtze Dich gern.
đ DatenschĂ€fer – Auswertung, Analyse und Automatisierung fĂŒr KMU im Norden
đ§ Kontakt ĂŒber sesoft.de | đ§ Access · VBA · SQL · Power Platform
Keine Antworten