Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Automatische Sicherungskopie per VBA

Automatische Sicherungskopie per VBA
18.12.2014 15:32:23
Harald
Guten Tag,
kann mir jemand helfen?
Wie heißt der Code, um von einer Datei eine Sicherungskopie beim Schließen der Datei zu erstellen, welche folgende Kriterien erfüllt.
1) Der Dateiname soll grundsätzlich gleich bleiben, nur um das Wort "Sicherungskopie" (ohne Datum) ergänzt.
2) Die Sicherungskopie soll als .xlsm - Datei (Excel 2013 mit Makros) gespeichert werden.
3) Die Sicherungskopie soll automatisch in einem Unterordner "Archiv" im ursprünglichen Speicherort gespeichert werden.
Anders gesagt, die Speicherort soll automatisch erkannt werden und die Sicherungskopie dort im Unterordner "Archiv" abgelegt werden.
Die Sicherungskopie soll immer wieder durch die jeweils neue ersetzt werden. Also nicht mit Datum/Uhrzeit im Namen gespeichert werden, damit immer nur eine Sicherungskopie verwahrt wird.
Ich hoffe, dass mir jemand helfen kann und bedanke mich schon im vorraus für die freundliche Hilfe.
Viele Grüße
Harald

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Recherche:372 Erg.zu Sicherungskopie (owT)
18.12.2014 15:37:43
EtoPHG

AW: Automatische Sicherungskopie per VBA
18.12.2014 15:41:47
AndrRo
Hallo Harald,
dieser Code speichert zusätzlich eine Kopie, hier im Unterordner "Archiv"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Pfad = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\")) & "Archiv\"
DATEI = Mid(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\") + 1, Len(ThisWorkbook. _
FullName))
On Error Resume Next
SetAttr Pfad & DATEI, 0 'Schreibschutz aus
On Error GoTo 0
ThisWorkbook.SaveCopyAs Pfad & DATEI
SetAttr Pfad & DATEI, 1 'Schreibschutz ein
End Sub
gruß AndrRo

Anzeige
AW: Automatische Sicherungskopie per VBA
19.12.2014 19:28:28
Harald
Hallo EtoPHG, hallo AndrRo,
vielen Dank für eure Lösungsvorschläge.
Das Speichern einer kompletten Datei als Sicherungskopie in einem Unterordner "Archiv" des ursprünglichen Speicherortes klappt schon mal super.
Jetzt brauche ich noch eine ähnliche, aber etwas kompliziertere Lösung.
Ich möchte nur ein einziges Tabellenblatt aus einer Datei heraus kopieren und mit dem Wert aus Zelle A1 als Dateiname (&".xlsm") im Unterordner "Archiv" des ursprünglichen Speicherortes abspeichern.
Die in diesem Tabellenblatt gespeicherten VBA- Codes sollen ebenfalls dabei erhalten bleiben.
Kennt jemand den Code für dieses Vorhaben?

Vielen Dank im voraus.
Harald G.

Anzeige
AW: Automatische Sicherungskopie per VBA
20.12.2014 21:53:42
Dieter
Hallo Harald,
du kannst das mit dem folgenden Programm machen

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim datei As String
Dim fso As FileSystemObject
Dim pfad As String
Dim wb As Workbook
Dim ws As Worksheet
Set fso = New FileSystemObject
pfad = Me.Path & "\Archiv\"
If Not fso.FolderExists(pfad) Then
MsgBox "Pfad '" & pfad & "' existiert nicht"
Exit Sub
End If
Set ws = Me.Worksheets("Tabelle2") ' Hier Name deiner Tabelle
datei = ws.Range("A1")
If datei = "" Then
MsgBox "Dateiname fehlt"
Exit Sub
Else
datei = datei & ".xlsm"
End If
On Error Resume Next
Kill pfad & datei
On Error GoTo 0
ws.Copy
Set wb = ActiveWorkbook
wb.SaveAs Filename:=pfad & datei, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
wb.Close
End Sub

Das Programm braucht einen Verweis auf die Bibliothek "Microsoft Scripting Runtime" (VBA-Editor: Extras > Verweise...)
Viele Grüße
Dieter

Anzeige
Frage: Automatische Sicherungskopie per VBA
23.12.2014 09:28:30
Harald
Hallo Dieter, hallo an alle,
vielen Dank für den Lösungsansatz.
Diesen kann ich bei mir auf der Arbeit leider nicht verwenden.
Hinweis von Dieter war:
Das Programm braucht einen Verweis auf die Bibliothek ""Microsoft Scripting Runtime"" VBA-Editor: Extras - Verweise...
Hierzu habe ich aber aufgrund eingeschränkter Benutzer- Berechtigung in meiner Firma keinen Zugriff.
Gibt es trotzdem eine Lösung für mein Ziel:
Ich möchte nur ein einziges Tabellenblatt aus einer Datei heraus kopieren und mit dem Wert aus Zelle A1 als Dateiname (&".xlsm") im Unterordner "Archiv" des ursprünglichen Speicherortes abspeichern.
Die in diesem Tabellenblatt gespeicherten VBA- Codes sollen ebenfalls dabei erhalten bleiben.
Kennt jemand den Code für dieses Vorhaben?

Vielen Dank im voraus.
Ansonsten wünsche ich allen ein frohes Weihnachtsfest und einen guten Start ins Jahr 2015
Harald G.
P.S. Wir arbeiten mit Office 2013
Mein Level: Excel gut - VBA bescheiden

Anzeige
AW: Frage: Automatische Sicherungskopie per VBA
23.12.2014 11:26:02
Dieter
Hallo Harald,
die Bibliothek "Microsoft Scripting Runtime" ist für dein Problem ganz irrelevant.
Ich habe sie nur verwendet, um die Existenz des Verzeichnisses "...\Archiv\" zu prüfen.
Du kannst aber genauso gut auch die gute alte Dir-Funktion verwenden.
Das Programm lautet dann:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim datei As String
Dim pfad As String
Dim wb As Workbook
Dim ws As Worksheet
pfad = Me.Path & "\Archiv\"
If Dir(pfad, vbDirectory) = "" Then
MsgBox "Pfad '" & pfad & "' existiert nicht"
Exit Sub
End If
Set ws = Me.Worksheets("Tabelle2") ' Hier Name deiner Tabelle
datei = ws.Range("A1")
If datei = "" Then
MsgBox "Dateiname fehlt"
Exit Sub
Else
datei = datei & ".xlsm"
End If
On Error Resume Next
Kill pfad & datei
On Error GoTo 0
ws.Copy
Set wb = ActiveWorkbook
wb.SaveAs Filename:=pfad & datei, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
wb.Close
End Sub
Viele Grüße und schöne Weihnachtstage
Dieter

Anzeige
AW: Frage: Automatische Sicherungskopie per VBA
23.12.2014 13:25:11
Harald
Hallo Dieter,
... das teste ich dann im neuen Jahr.
Erstmal vielen Dank, schöne Feiertage und einen guten Rutsch ins Jahr 2015.
Harald
;
Anzeige
Anzeige

Infobox / Tutorial

Automatische Sicherungskopie per VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine automatische Sicherungskopie in Excel mittels VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinDateiname)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Dim datei As String
       Dim pfad As String
       Dim wb As Workbook
       Dim ws As Worksheet
       pfad = Me.Path & "\Archiv\"
       If Dir(pfad, vbDirectory) = "" Then
           MsgBox "Pfad '" & pfad & "' existiert nicht"
           Exit Sub
       End If
       Set ws = Me.Worksheets("Tabelle2") ' Hier Name deiner Tabelle
       datei = ws.Range("A1")
       If datei = "" Then
           MsgBox "Dateiname fehlt"
           Exit Sub
       Else
           datei = datei & ".xlsm"
       End If
       On Error Resume Next
       Kill pfad & datei
       On Error GoTo 0
       ws.Copy
       Set wb = ActiveWorkbook
       wb.SaveAs Filename:=pfad & datei, FileFormat:=xlOpenXMLWorkbookMacroEnabled
       wb.Close
    End Sub
  4. Schließe den Editor und speichere Deine Excel-Datei als .xlsm (Excel-Makrodatei).

  5. Testen: Schließe die Datei, um die Sicherungskopie zu erstellen. Überprüfe den Unterordner "Archiv" auf die Sicherung.


Häufige Fehler und Lösungen

  • Fehler: "Pfad existiert nicht"

    • Lösung: Stelle sicher, dass der Unterordner "Archiv" im gleichen Verzeichnis wie die Excel-Datei vorhanden ist.
  • Fehler: "Dateiname fehlt"

    • Lösung: Überprüfe, ob in der angegebenen Zelle (z.B. A1) ein Wert eingegeben ist.
  • Fehler: Excel kann die Datei nicht speichern

    • Lösung: Überprüfe, ob Du Schreibrechte in dem angegebenen Verzeichnis hast.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest oder eingeschränkte Berechtigungen hast, kannst Du manuell Sicherungskopien erstellen:

  1. Speichere die Datei unter einem anderen Namen: Gehe zu "Datei" > "Speichern unter" und wähle den Speicherort aus.
  2. Verwende die Funktion "Versionen verwalten": In Excel gibt es die Möglichkeit, frühere Versionen einer Datei wiederherzustellen.

Praktische Beispiele

  1. Sicherungskopie mit Datum im Namen: Du kannst den Dateinamen anpassen, um das aktuelle Datum einzufügen:

    datei = ws.Range("A1") & "_" & Format(Now, "yyyy-mm-dd") & ".xlsm"
  2. Sicherungskopie in einem anderen Speicherort: Ändere den Pfad in der pfad-Variable zu einem gewünschten Speicherort:

    pfad = "C:\Dein\Neuer\Pfad\Archiv\"

Tipps für Profis

  • Automatische Sicherung deaktivieren: Wenn Du die automatische Sicherung in Excel deaktivieren möchtest, gehe zu "Datei" > "Optionen" > "Speichern" und entferne das Häkchen bei "AutoWiederherstellen-Informationen speichern alle X Minuten".

  • Backup-Makros anpassen: Du kannst das Backup-Makro erweitern, um mehrere Blätter oder spezifische Formate zu sichern.


FAQ: Häufige Fragen

1. Wo speichert Excel die automatischen Sicherungskopien?
Excel speichert die automatischen Sicherungskopien in einem temporären Ordner, der je nach Betriebssystem unterschiedlich sein kann.

2. Wie kann ich die Sicherungskopie in einem anderen Speicherort erstellen?
Ändere einfach den Pfad in der pfad-Variablen im VBA-Code, um die Sicherungskopie an einem anderen Ort zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige