Automatisches sichern der Excel Datei perMakro
Hallo zusammen,
Ich hab einen Excel Datei mit der ich täglich arbeite und Infos Zahlen eingebe. Da ich aber auch nicht immer dran denke die Datei zwischen durch zu sichern würde ich gerne per Makro automatische die ganze Datei.
Ich stell mir ein Makro vor das die Datei im Abstand von ca. 1 Stunde in einem bestimmten Ordner `Sicherung_Stam` die Datei mit dem Dateinamen `Stam` + Datum + fortlaufender Nummer aufsteigend gespeichert wird.
ist das ein schwieriges Makro ??? oder weis einer wo ich mir so ein Makro absehen kann ???
Danke in voraus für eure Mühe.
Gruß Dutchi
Antwort schreiben
Antwort 2 von coros vom 16.09.2022, 05:48 Options
Hallo Dutchi,
das kann man z.B. mit nachfolgendem Makro realisieren
Kopiere das Makro in ein "
StandardModul".
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Const strPfad As String = "C:\"
Sub AutoSave()
'Speichernummer in Blatt "Tabelle1" in Zelle A1 schreiben
Sheets("Tabelle1").Range("A1") = Sheets("Tabelle1").Range("A1") + 1
With Application
.DisplayAlerts = False
'Nur zur Info in der Statusleiste einen Speichertext anzeigen
.StatusBar = "Datei wird gesichert..."
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam_" & Format(Now, "dd.mm.yyyy") _
& "_" & Sheets("Tabelle1").Range("A1") & ".xls"
'Prozedur nach Ablauf der Zeit neu starten, Zeitangabe erfolgt in hh:mm:ss
.OnTime Now + TimeValue("00:00:00"), "AutoSave"
.StatusBar = ""
.DisplayAlerts = True
End With
End Sub
Kopiere das Makro in das VBA-Projekt "
DieseArbeitsmappe".
Option Explicit
Private Sub Workbook_Open()
Call AutoSave
End Sub
Das obige Makro speichert jede Stunde die Datei unter dem Namen "Stam_aktuelles Datum_Nummer". Die Nummer wird in Zelle A1 eingetragen und bei jedem Ausführen um den Wert 1 erhöht.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von coros vom 16.09.2022, 08:32 Options
Hi,
ups, da habe ich doch glatt vergessen in der Zeile
.OnTime Now + TimeValue("00:00:00"), "AutoSave"
die Stunde einzutragen. Die Zeile müsste also
.OnTime Now + TimeValue("01:00:00"), "AutoSave"
für 1 Stunde lauten.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Solo vom 16.09.2022, 13:33 Options
Hi,
warum der Aufwahd? Excel sichert die Dokumente automatisch zeitabhängig, wenn es in den Optionen engestellt wird.
Antwort 5 von coros vom 16.09.2022, 13:37 Options
Hallo Solo,
ließ Dir die Frage mal durch. Dort steht, dass die Datei in einem bestimmten Ordner (`Sicherung_Stam`) mit dem Dateinamen `Stam` + Datum + fortlaufender Nummer aufsteigend gespeichert werden soll. Das macht die von Dir angesprochene Möglichkeit nicht, da diese immer nur die aktuell geöffnete Datei sichert, ohne deren Namen zu verändern. Daher der Auswand.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von Dutchi1972 vom 16.09.2022, 21:26 Options
Hallo coros-Oliver
Hab deine Lösung sofort ausprobiert und es funktionierte direkt und ohne hacken. ....
Ich hab die Ebenen(Ordner) auf der die Datie gesichert werden soll noch etwas angepasst, und noch eine
jetzt hab ich nur noch eine kl. Bitte, ich möchte die Sicherung in einen seperaten Ordner ..... ww-Sicherung\Sicherung\
wie bekomm ich das jetzt noch hin ????
Hab zwar scho etwas ausprobiert und code kopiert und verschoben aber das hat nicht so funktioniert.
Danke im voraus für die Mühe .
Gruß Dutchi-Wim
Option Explicit
Const strPfad As String = "\\Fileserver\Alle\ww-Sicherung\"
Sub AutoSave()
'Speichernummer in Blatt "Tabelle1" in Zelle A1 schreiben
Sheets("Tabelle1").Range("A1") = Sheets("Tabelle1").Range("A1") + 1
With Application
.DisplayAlerts = False
'Nur zur Info in der Statusleiste einen Speichertext anzeigen
.StatusBar = "Datei wird gesichert..."
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam_" & Format(Now, "dd.mm.yyyy") _
& "_" & Sheets("Tabelle1").Range("A1") & ".xlsm"
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam" speichern
ThisWorkbook.SaveAs strPfad & "Stam.xlsm"
'Prozedur nach Ablauf der Zeit neu starten, Zeitangabe erfolgt in hh:mm:ss
.OnTime Now + TimeValue("00:00:30"), "AutoSave"
.StatusBar = ""
.DisplayAlerts = True
End With
End Sub
Antwort 7 von coros vom 17.09.2022, 05:01 Options
Hallo Dutchi,
den Pfad musst Du in der Zeile
Const strPfad As String = "\\Fileserver\Alle\ww-Sicherung\"
angeben, wie Du ja sicherlich bereits bemerkt hast. Daher verstehe ich Deine Frage nicht. Das einzige was mir auffält, Du hast in der obigen Zeile
....\ww-Sicherung\ eingetragen, Du schreibst aber in AW6 von einem Pfad
..... ww-Sicherung\Sicherung\Demanch müsste die Zeile dann eigentlich
Const strPfad As String = "\\Fileserver\Alle\ww-Sicherung\Sicherung\"
lauten.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von Dutchi1972 vom 17.09.2022, 08:32 Options
Hallo,
Da hab ich mich etwas blöd ausgedrückt
Die "Stam" Datei soll im "Alle" Ordner sein (normale Ebene,)
Die "Stam_Datum...." soll in "Alle\ww-Sicherung" Ordner (untergeorneter Ordner) sein.
Hoffe das es jetzt eindeutiger ist,
Gruß Wim
Antwort 9 von coros vom 17.09.2022, 08:52 Options
Hallo Wim,
Zitat:
Hoffe das es jetzt eindeutiger ist,
nein ist es nicht.
Die eine Datei hast Du doch geöffnet, da ist der Pfad doch egal. Die andere Datei wird dann in den Pfad gesichert, den Du bei "Const strPfad As String =....." angibst. Wenn das nicht so sein soll, dann erkläre das genauer bzw. zeige das an einem Besipiel auf, was Du meinst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von Dutchi1972 vom 17.09.2022, 09:43 Options
Hallo Olivere,
Hier nochmal das Makro.
jetzt speichert der Pc alles unter " ... Alle\WW" ab
er soll aber wenn möglich die
Datei "Stam" normal unter "..Alle\WW" speichern und
Datei "Stam_mit Datum und ..." in "...Alle\WW\Sicherungen"
ist das möglich??? Danke für deine Mühe.
Gruß Wim
Option Explicit
Const strPfad As String = "\\Fileserver\Alle\WW\"
Sub AutoSave()
'Speichernummer in Blatt "Tabelle1" in Zelle A1 schreiben
Sheets("Tabelle1").Range("A1") = Sheets("Tabelle1").Range("A1") + 1
With Application
.DisplayAlerts = False
'Nur zur Info in der Statusleiste einen Speichertext anzeigen
.StatusBar = "Datei wird gesichert..."
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam_" & Format(Now, "dd.mm.yyyy") _
& "_" & Sheets("Tabelle1").Range("A1") & ".xlsm"
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam.xlsm"
'Prozedur nach Ablauf der Zeit neu starten, Zeitangabe erfolgt in hh:mm:ss
.OnTime Now + TimeValue("00:00:30"), "AutoSave"
.StatusBar = ""
.DisplayAlerts = True
End With
End Sub
Antwort 11 von coros vom 17.09.2022, 09:53 Options
Hallo Wim,
die Datei "Stam.xls" ist die Datei, die Du offen hast und diese liegt bereits im Order "Alle" und wurde von dort geöffnet?Wenn ja, dann würde das Makro wie folgt lauten.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Const strPfad As String = "\\Fileserver\Alle\WW\"
Sub AutoSave()
'Speichernummer in Blatt "Tabelle1" in Zelle A1 schreiben
Sheets("Tabelle1").Range("A1") = Sheets("Tabelle1").Range("A1") + 1
With Application
.DisplayAlerts = False
'Nur zur Info in der Statusleiste einen Speichertext anzeigen
.StatusBar = "Datei wird gesichert..."
'Aktuelle Datei an Ihrem ursprungsort sichern
ThisWorkbook.Save
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam_" & Format(Now, "dd.mm.yyyy") _
& "_" & Sheets("Tabelle1").Range("A1") & ".xlsm"
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam.xlsm"
'Prozedur nach Ablauf der Zeit neu starten, Zeitangabe erfolgt in hh:mm:ss
.OnTime Now + TimeValue("00:00:30"), "AutoSave"
.StatusBar = ""
.DisplayAlerts = True
End With
End Sub
Der Code wurde um die Zeile
ThisWorkbook.Save
erweitert und sichert damit die Datei an Ihrem Ursprungsort.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von Dutchi1972 vom 17.09.2022, 11:16 Options
Hallo Oliver,
Hab das Makro noch etwas angepasst - umgebastelt, funktionierte leider nicht so richtig.
Aber jetzt speichert er alles da wo ich es will. Du hast mir aber super weitergeholfen und einen GROßEN DANK dafür .
Einfach Super.
Danke nochmal., hoffe das ich nochmal mit einer anderen Sache wieder kommen kann.
Danke nochmal !!!!
Gruß Wim
Option Explicit
Const strPfad As String = "\\Fileserver\Alle\WW\"
Sub AutoSave()
'Speichernummer in Blatt "Tabelle1" in Zelle A1 schreiben
Sheets("Tabelle1").Range("A1") = Sheets("Tabelle1").Range("A1") + 1
With Application
.DisplayAlerts = False
'Nur zur Info in der Statusleiste einen Speichertext anzeigen
.StatusBar = "Datei wird gesichert..."
'Aktuelle Datei an Ihrem ursprungsort sichern
ThisWorkbook.Save
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Sicherung\" & "Stam_" & Format(Now, "dd.mm.yyyy") _
& "_" & Sheets("Tabelle1").Range("A1") & ".xlsm"
'Datei in Pfad aus Variablen "strPfad" unter dem Namen "Stam_Datum_Speichernummer" speichern
ThisWorkbook.SaveAs strPfad & "Stam.xlsm"
'Prozedur nach Ablauf der Zeit neu starten, Zeitangabe erfolgt in hh:mm:ss
.OnTime Now + TimeValue("00:00:30"), "AutoSave"
.StatusBar = ""
.DisplayAlerts = True
End With
End Sub
Antwort 13 von Dutchi1972 vom 17.09.2022, 13:10 Options
Hallo Oliver,
was muß ich eintragen im Makro das er mir die Letzte Aktuallisierungs-Datum und Zeit im Tabellen Blatt schreibt
z.B im Zelle C5
Danke
Gruß Wim
Antwort 14 von coros vom 17.09.2022, 14:16 OptionsLösung
Hallo Wim,
die Zeile
Range("C5") = Now
irgendwo in das Makro einfügen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von Dutchi1972 vom 20.09.2022, 13:22 Options
Hallo Oliver,
kleiner Auszug aus Makro,
wenn ich in einer anderen Datei bin aber die Stam Datei geöffnet ist und sich auch Sichern soll, bekomm ich eine Fehlermeldung
Laufzeitfehler ´9´
Index außerhalb des güldigen Bereichs
Was kann ich ergänzen damit er weis das die Tabelle in "Stam"-Datei liegt !!!
'Speichernummer in Blatt "Tabelle1" in Zelle C3 schreiben
Sheets("Menü").Range("B4") = Sheets("Menü").Range("B4") + 1
Sheets("Menü").Range("C4") = Now
Danke im Voraus.
Gruß Wim
Antwort 16 von coros vom 20.09.2022, 16:37 Options
Hallo Wim,
ändere die Zeilen wie folgt ab:
'Speichernummer in Blatt "Tabelle1" in Zelle C3 schreiben
ThisWorkbook.Sheets("Menü").Range("B4") = ThisWorkbook.Sheets("Menü").Range("B4") + 1
ThisWorkbook.Sheets("Menü").Range("C4") = Now
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 17 von Dutchi1972 vom 20.09.2022, 17:07 Options
Hallo Oliver,
Das funktioniert.
Jetzt macht er mir einen Fehlermeldung indieser Zeile ????
hier hackt es leider
ThisWorkbook.SaveAs strPfad & "STADAT_Sicherung\" & "STADAT2011_" & Format(Now, "yyyy.mm.dd") _
& "_" & Sheets("Menü").Range("B4") & ".xlsm"
die nächste funktioniert !!!
ThisWorkbook.SaveAs strPfad & "STADAT\" & "STADAT2011.xlsm"
Gruß Wim
Antwort 18 von coros vom 20.09.2022, 17:28 Options
Hallo Wim,
hier die geänderte Zeile
ThisWorkbook.SaveAs strPfad & "STADAT_Sicherung\" & "STADAT2011_" & Format(Now, "yyyy.mm.dd") _
& "_" & ThisWorkbook.Sheets("Menü").Range("B4") & ".xlsm"
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 19 von Dutchi1972 vom 21.09.2022, 08:35 Options
Morgen Oliver,
hat super funktioniert
Danke hab einige Zeilen so geändert, ,
Läuft jetzt ohne zu hacken, nur beim sichern wechselt kurz die Ansicht wenn ich in einer anderen Datei bin in die zu sichernde Datei. aber da kann ich mit leben wenn das jede Stunde mal passiert.
Danke nochmal,
Gruß Wim
Antwort 20 von coros vom 21.09.2022, 09:03 Options
Hallo Wim,
schreibe ganz am Anfang des VBA- Codes die Zeile
Application.ScreenUpdating = False
. Damit sollte auch der Bildwechsel beim Speichern nicht mehr auftreten.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.