Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Sicherungskopie beim schließen der Mappe
#1
Hallo liebe Excel-Freunde,

Ich habe eine Excelmappe, mit der ich jeden Tag arbeite,
Diese möchte ich gerne, wenn ich diese nach getaner Arbeit schließe, nicht nur in dem Verzeichnis speichern, wo ich so hauptsächlich aufrufe, sondern zusätzlich in einem Sicherungsverzeichnis.

Falls etwas passiert beim arbeiten oder ähnliches, oder ich verändere an meiner Mappe ungewollt etwas, habe ich so die Möglichkeit die Kopie wieder ins eigentliche Verzeichnis zu packen.

Natürlich weiß ich wieder mal nicht, wie ich das hin bekommen soll, deswegen stelle ich hier die Frage.

Welche sinnvolle Lösung gibt es da für mich?

Ich hatte mir das so vorgestellt, das ich in meiner Mappe einen Button habe, auf diesem steht " Tagesabschluss"...oder so. ;)

Und beim klick darauf, ist die Mappe geschlossen, im Hauptverzeichnis gesichert und im Sicherungsverzeichnis.
Dateiname wie die Mappe, mit dem Zusatz des Speicherdatum?

Ist das so umsetzbar?

Ware super!

Grüße an alle

Mike
Antworten Top
#2
Hallo Mike,

folgender Code kommt in das schon vorhandene VBA-Modul "DieseArbeitsmappe":

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Me.SaveCopyAs "C:\Users\Uwe\Documents\Excel\Backups\" & Format(Now, "yyyymmdd_hhnn_") & Me.Name
End Sub

Den Pfad passt Du Deinen Gegebenheiten an. Die Sicherungskopie wird dann automatisch beim Schließen der Mappe erstellt.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Mike4711
Antworten Top
#3
Hallo Mike,

ich selber handhabe es so...
Code:
Sub BKCFA_schließen()
  Dim sPfad As String
  Dim iClick As Integer
  sPfad = "F:\MS-Excel\Entwicklung\Eigene\Dateien\Analyse\Vorlagen\Backup\" 'Pfad anpassen
  With ActiveWorkbook
     .Save
     iClick = MsgBox(prompt:="Möchten Sie eine Sicherungskopie anlegen?", Buttons:=vbYesNo)
     If iClick = vbYes Then
         .SaveCopyAs sPfad & Split(ThisWorkbook.Name, ".xlsm")(0) & "_" & Format(Date, "dd-mm-yyyy") & ".xlsm" 'Dateiendung anpassen
         If iClick = vbNo Then
           Exit Sub
        End If
     End If
  End With
  Application.Quit
End Sub

D.h. die Originaldatei wird dort gespeichert, von wo sie gestartet wurde. Anschließend wird eine Dateikopie in einem Ordner deiner Wahl abgelegt vorher must du in der Messagebox "ja oder nein" anklicken, deshalb steht im Code Pfad und Dateiendung anpassen. Und zum Schluss wird Excel geschlossen. Wenn du das nicht willst, enferne "Application.Quit".
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
[-] Folgende(r) 1 Nutzer sagt Danke an Bernie für diesen Beitrag:
  • Mike4711
Antworten Top
#4
Hallo Kuwer und Hallo Berni,

Sorry, das ich jetzt erst antworte. 

Ich danke euch für eure beiden vorschläge.
Ich werde sie beide nachher einmal ausprobieren und mich melden, ob ich es hin bekommen habe ;)

Grüße Mike
Antworten Top
#5
Hallo Bernie,

habe deinen Code einmal ausprobiert.
Abspeichern , macht er prima.

Aber nur in dem Verzeichnis, wo ich die Date auch aufgerufen habe.
Eine Sicherungskopie in dem Verzeichnis, das ich angepasst habe, macht er nichts.

sPfad = "C:\Users\Michael\Desktop\Sicherung\" 'Pfad anpassen


Grüße Mike
Antworten Top
#6
Hallo Uwe,

habe deinen Code auch gerade ausprobiert.

Den Pfad habe ich angepasst...der Code sieht nun so aus:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Me.SaveCopyAs "C:\Users\Michael\Desktop\Sicherung\" & Format(Now, "dd-mm-yyyy_") & Me.Name
End Sub
Habe das Datumsformat etwas geändert.
War mir erst nicht sicher, ob beim schließen, die Datei einmal gespeichert wird, von wo ich sie vorher aufgerufen habe. Aber wie es aussieht, klappt das so ganz gut.
Also, es wird dann auch eine Kopie mit Datum in einem Verzeichnis meiner Wahl zusätzlich gespeichert.
Ich würde sagen...super...genauso hab ich es mir vorgestellt.
Vielen Dank für deine Lösung.
Die Lösung von Bernie ist auch nicht schlecht, dort hat nur die Sicherungskopie in dem Extra-Verzeichnis nicht geklappt.
Grüße Mike
Antworten Top
#7
Hallo Uwe,

habe deinen Code in meine Mappe eingebaut und gestern Abend auch ausprobiert.
Klappte.....speichern ins Hauptverzeichnis und ins Sicherungsverzeichnis.
Doch heute hier am Arbeitsplatz habe ich es auch ausprobiert, da ich den Speicherpfad anpassen musst und es klappt nicht ganz so gut.

Ich habe die Mappe nach dem ersten Aufruf geschlossen...alles wurde gespeichert.
Danach habe ich die Mappe wieder geöffnet, bin auf schließen gegangen und es kam erst folgende Meldung:

   

beim scließen dieser Meldung, wurde ich trotzdem gefragt, ob speichern möchte oder nicht.
Bin auf speichern gegangen und habe anschließen in dem Sicherungsverzeichnis geschaut und es war nichts mehr da.
Die zuvor zuerst gespeicherte Datei war weg und Verzeichnis leer.
Im Hauptverzeichnis, dort wo ich die Datei aufrufe ist alles OK.

Grüße Mike
Antworten Top
#8
Hallo Mike,

vielleicht hättest Du doch erst einmal das Datumsformat so lassen sollen (mit Stunden und Minuten), damit sich die Dateinamen (zumindest bei einem zeitlichen Abstand größer eine Minute, sonst müsste man noch die Sekunden hinzufügen) unterscheiden.

Gruß Uwe
Antworten Top
#9
(08.03.2015, 21:05)Mike4711 schrieb: Aber nur in dem Verzeichnis, wo ich die Date auch aufgerufen habe.
Eine Sicherungskopie in dem Verzeichnis, das ich angepasst habe, macht er nichts.

sPfad = "C:\Users\Michael\Desktop\Sicherung\" 'Pfad anpassen

Hallo Mike,

also ich rufe bei mir eine Datei z.B. "xxxx.xlsm" aus dem Ordner "Analyse" meines Codes auf. Wenn ich diese Datei schließe, wird sie im selben Ordner abgespeichert und zwar ohne den Dateinamen zu ändern. Siehe hier:
Code:
With ActiveWorkbook
     .Save
Anschließend wird eine MsgBox gestartet mit der Abfrage ... Sicherungskopie - ja oder nein. Und jetzt kommt deine Pfadangabe ins Spiel und in dem Ordner wird eine Kopie der Startdatei mit Datum abgelegt. Siehe hier:
Code:
.SaveCopyAs sPfad & Split(ThisWorkbook.Name, ".xlsm")(0) & "_" & Format(Date, "dd-mm-yyyy") & ".xlsm" 'Dateiendung anpassen

Dann sieht die Datei so aus: Name_09-03-2015.xlsm

Das war nochmal der ungefähre Ablauf des Makros. Wenn es jetzt bei dir nicht funktioniert, dann kann ich mir denken, dass du eine andere Dateiendung als "xlsm" hast und die in meinem Code nicht angepasst hast.

Nachtrag: hatte vergessen zu erwähnen, dass ich die Datei über einen Button schließe, ansonsten die erste Codezeile anpassen.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten Top
#10
Hallo Uwe,

Ok...du hattest Recht.....hätte dein Datumsformat so belassen sollen. :)

Kann ich das Format:

(Now, "yyyymmdd_hhnn_")  sieht dann so aus      20150309_1616

auch so im Code angeben:

(Now, "yyyy-mm-dd_hh:nn_")   damit es hinterher so aussieht?  2015-03-09_16:16

Grüße Mike
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste