online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Dutchi1972 vom 15.09.2022, 23:08 Options

Lösung

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 1 von Lutz1965 vom 16.09.2022, 05:37 Options

Moin Moin...

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

Gruss

Lutz

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

Lö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.

Ähnliche Themen

Excel: Automatisches Ausfüllen von genannten Wörtern
Tausendsassa  12.07.2009 - 298 Hits - 2 Antworten

Excel Daten automatisch in einer anderen Excel Datei kopieren
Dutchi1972  01.10.2009 - 1325 Hits - 3 Antworten

Excel 2003 - automatisches Einfärben von Zellen bei bestimmten Eintrag
Petra_1205  01.10.2009 - 503 Hits - 4 Antworten

Automatisches Ausdrucken in Excel
Hasranak  20.08.2010 - 74 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026