Ziel: Datenbank verfügbar machen – aber nicht zerstören
Access ist zickig, was Synchronisation angeht.
OneDrive ist keine Datenbankplattform.
Trotzdem kannst Du Access mit OneDrive nutzen – wenn Du die Regeln beachtest.
Variante 1: Frontend lokal, Backend im OneDrive-Sync-Ordner
Das ist der Klassiker.
Aufbau:
frontend.accde
lokal bei jedem Userbackend.accdb
im synchronisierten OneDrive-Ordner (z. B.C:\Users\Benutzer\OneDrive\AccessData\backend.accdb
)- Tabellen im Frontend sind verknüpft auf das Backend
Risiken:
- Konflikte beim Schreiben (wenn mehrere Nutzer gleichzeitig)
- langsame Performance bei großen Tabellen
- Datei wird geblockt, wenn OneDrive gerade synchronisiert
Empfehlung:
- Nur für Einzelplatz oder kleine Teams
- Kein Dauerzugriff – kurz verbinden, schnell wieder raus
- Immer mit Backup arbeiten
Variante 2: OneDrive als Transportweg – nicht als Arbeitsverzeichnis
Besser: Access läuft wie immer lokal.
OneDrive ist nur der Austauschplatz.
Beispiel: Bericht automatisch in OneDrive speichern
Public Sub ExportiereBericht()
Dim ziel As String
ziel = Environ("OneDrive") & "\Export\Bericht_" & Format(Now(), "yyyymmdd_hhnnss") & ".pdf"
DoCmd.OutputTo acOutputReport, "rptMonatsbericht", acFormatPDF, ziel, False
End Sub
Gilt auch für Exporte nach Excel oder CSV.
Variante 3: CSV-/Excel-Export nach OneDrive
Public Sub ExportNachOneDrive()
Dim pfad As String
pfad = Environ("OneDrive") & "\Daten\export.csv"
DoCmd.TransferText acExportDelim, , "qryDaten", pfad, True
End Sub
Das BI-Tool, Power Automate oder ein Kollege kann mit dieser Datei weiterarbeiten.
Variante 4: Access liest Daten aus OneDrive-Dateien
Zum Beispiel: wöchentlicher Import einer Excel-Datei
Public Sub ImportExcelOneDrive()
Dim pfad As String
pfad = Environ("OneDrive") & "\Import\neukunden.xlsx"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "tblNeukunden", pfad, True
End Sub
Achte auf:
- Pfad muss synchronisiert sein
- Datei darf nicht gerade geöffnet oder synchronisiert werden
- Fehler abfangen
Variante 5: OneDrive als Backup-Ziel
Automatisches Kopieren der Datenbank:
Public Sub BackupNachOneDrive()
Dim quelle As String, ziel As String
quelle = CurrentDb.Name
ziel = Environ("OneDrive") & "\Backup\backup_" & Format(Now(), "yyyymmdd_hhnnss") & ".accdb"
FileCopy quelle, ziel
End Sub
Schnell, simpel, lebensrettend.
Wichtige Hinweise zur OneDrive-Nutzung
- Access-Dateien dürfen nicht gleichzeitig von mehreren geöffnet werden, wenn sie im OneDrive-Sync-Ordner liegen
- Niemals direkt mit mehreren Benutzern auf
backend.accdb
in OneDrive arbeiten - Konfliktdateien vermeiden: OneDrive erzeugt Kopien → Tabellenverknüpfungen gehen kaputt
- Große Tabellen: besser auf SQL Server umstellen
- Änderungen immer lokal machen, dann hochladen
Alternativen zu OneDrive
- SharePoint mit angebundener SQL Server-Datenbank
- Access als Frontend, Backend über ODBC auf Azure SQL
- Synology- oder Nextcloud-Speicher als reiner Dateiablageplatz
Also
OneDrive und Access? Geht.
Aber nicht parallel, nicht unkontrolliert und nicht als Multiuser-Plattform.
Übrigens
Environ("OneDrive")
liefert nur den Pfad zum OneDrive-Ordner, den Windows als Standard-OneDrive erkennt – in der Regel:
- Bei Privatanwendern:
C:\Users\<Benutzer>\OneDrive\
- Bei Business-Nutzern:
C:\Users\<Benutzer>\OneDrive - <Firmenname>\
Wenn Du mehrere OneDrive-Konten hast (z. B. privat und geschäftlich), dann gilt:
Standardverhalten:
Environ("OneDrive")
zeigt nur auf das erste (private) OneDrive-Konto, das mit Windows verknüpft ist.- Es gibt kein Environ(„OneDriveCommercial“) oder so.
- Business-OneDrive wird nicht über Umgebungsvariable bereitgestellt.
So findest Du die Pfade zu allen OneDrive-Instanzen
Möglichkeit 1: Manuell
- Öffne den Explorer
- Geh zu:
C:\Users\<DeinBenutzername>\
- Du siehst Ordner wie:
OneDrive
OneDrive - DeinFirmenname
- Den Pfad kannst Du dann fest im Code verwenden, z. B.:
Const onedriveBusinessPfad As String = "C:\Users\Max\OneDrive - MaxTech GmbH\Export"
Möglichkeit 2: Pfade per Registry lesen (wenn Du’s automatisieren willst)
Public Function GetOneDriveBusinessPfad() As String
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
On Error Resume Next
GetOneDriveBusinessPfad = wsh.RegRead("HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Business1\UserFolder")
End Function
Das funktioniert bei vielen Clients mit OneDrive for Business.
Environ("OneDrive")
→ zeigt auf das erste verknüpfte OneDrive-Konto, meist privat- Für Business-Konten brauchst Du entweder:
- harten Pfad
- Registry-Lesung
- oder manuelle Auswahl (z. B. über
FileDialog
)
No responses yet