VBA Tipp: Aktuelle MDB sichern

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte schnell und einfach meine Daten sichern, um ein Backup zu haben und ggf. auf ältere Versionen zurückgreifen können.

Lösung

Das geht mit folgender Sub-Prozedur, die in einem globalen Modul hinterlegt wird.

Wiki warning.png

Warnung:

  • Die Datenbank wird auch kopiert, wenn sie geöffnet ist.
  • Ob das Kopieren einer Datenbank, die geöffnet ist, sinnvoll ist, mag jeder selbst entscheiden. Wenn gerade Daten geschrieben, gelöscht oder geändert werden, sichert man sich eventuell eine defekte Datenbank, und erfährt nichts davon. Die Vorgehensweise aus dem Weblink weiter unten ist eindeutig zu bevorzugen.


Public Sub SichereMich()
 
   ' Wenn der Ordner "Backup" fehlt, wird er angelegt
   ' Late Binding, kein Verweis auf "Microsoft Scripting Runtime" notwendig
   ' Quelle: http://www.dbwiki.net/
 
   Dim objFso      As Object 'Scripting.FileSystemObject
   Dim Quelldatei  As String
   Dim BackupPfad  As String
   Dim DBName      As String
   Dim Zieldatei   As String
   Dim strJetzt    As String
 
   Set objFso = CreateObject("Scripting.FileSystemObject")
 
   'Diese Datenbank kopieren (Quellpfad)
   Quelldatei = CurrentDb.Name
 
   'Zielpfad
   BackupPfad = CurrentProject.Path & "\Backup\"
 
   'Datenbankname ohne Erweiterung
   DBName = Left(CurrentProject.Name, InStr(CurrentProject.Name, ".") - 1)
 
   On Error Resume Next
   objFso.CreateFolder BackupPfad
   On Error GoTo 0
 
   'Aktuelles Datum und Zeit in Backup-Name (Genaue Zeit)
   strJetzt = Format(Now, "yyyymmdd_hhnnss")
   'Alternativ: Aktuelles Datum in Backup-Name (Nur Datum)
   'strJetzt=Format(Date, "yyyymmdd")
 
   Zieldatei = BackupPfad & DBName & "_" & strJetzt & ".mdb"
 
   'und jetzt kopieren:
   objFso.CopyFile Quelldatei, Zieldatei, True
 
End Sub

Aufruf

   Call SichereMich


Wiki hinweis.png

Tipp:

Um ein automatisches Speichern beim Schließen der Datenbank zu erreichen, einfach ein zusätzliches Formular mit Status acHidden beim Starten laden (siehe auch Beispiel-Datenbank "Protokoll"). Dann beim Entladen dieses Dummy-Formulars einfach die Funktion aufrufen.


Wikilinks


Weblinks