13k Aufrufe
Gefragt in Tabellenkalkulation von dutchi1972 Mitglied (419 Punkte)
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

20 Antworten

0 Punkte
Beantwortet von lutz1965 Profi (18.9k Punkte)
Moin Moin...

schau Dir mal beim link den Punkt 12 an..könnte was sein ...
Tipps zu Microsoft Excel

Gruss

Lutz
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Hi,
warum der Aufwahd? Excel sichert die Dokumente automatisch zeitabhängig, wenn es in den Optionen engestellt wird.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Wim,

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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
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
...