Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Backup datei auto speichern je 4 oder 6 stunden.

Backup datei auto speichern je 4 oder 6 stunden.
03.01.2020 13:17:26
Niko
Hallo an alle und ein Frohes Neues Jahr! mit viel Freude und Gesundheit :;-)
Der gesendete VBA Code wurde mit viel Schweiß eines unwissenden :-) (von mir) und vor allem mit großer Hilfe von Nepumuk und Hajo (..sagen wir mal ohne Sie, wäre ich noch am Anfang :-).
Doch nach Einbau bei ein paar Kollegen, wurde mit klar dass diese mit der vorgegeben Art der Speicherung durcheinander kommen. Fragt mich bitte nicht warum, die Kollegen machen die Eintragungen von zu Hause aus (kann zwar nicht nachvollziehen was da schwer sein kann, doch alle meinen dass sie damit durcheinander kommen) …und ich sammle die wünsche bzw. die Arbeitsstunden und füge alles zusammen.
Alle Kollegen sind Laien in benutzen eines PC, bzw. Software. Wir wollen damit unter uns sehen wer und wie viel sich jeder im Monat und jeweiligen Projekten einbringt um die Arbeitszeit,Freizeit und Urlaub besser unter uns koordinieren können. Außerdem so weiß jeder wer auf der Arbeit sein wird...also ist mehr eine selbst Hilfe.
Lange Reden kurzer Sinn :-)
Ist es möglich auf Basis dieses VBA Codes, es so umzustellen das es jede 4 oder 6 Stunden automatisch im Hintergrund eine Backup Datei erstellt so wie jetzt?
anbei auch die Datei:
https://www.herber.de/bbs/user/134115.xlsm
Danke im Voraus :-)
Option Explicit
Private Const Pfad As String = "\\WDMYCLOUD\Team\0 Niko\PLANER\Planer 2020\Backup\"
Private Const Dname As String = "Backup"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Prüft vor dem Schließen dieser Mappe ob Änderungen vorliegen/gespeichert wurde
'Liegen Änderungen vor bzw. wurde noch nicht gespeichert, kann gewählt werden ob
'diese Mappe gespeichert wird - ja speichert Mappe + Sicherheitskopie, nein speichert
'weder diese Mappe noch Sicherheitskopie
'Wurde Mappe vor dem Schließen nicht verändert bzw. bereits gespeichert, dann wird keine
'Sicherheitskopie erstellt und Mappe einfach geschlossen.
Dim Info As VbMsgBoxResult
If Not ReadOnly Then
If Not Saved Then
'Mappe wurde geändert aber NICHT gespeichert
'Abfrage ob die Original-Mappe überhaupt gespeichert werden soll
If MsgBox("Die Mappe wurde noch nicht gespeichert." & vbLf & _
"Soll diese Mappe gespeichert werden?", vbYesNo Or vbQuestion, _
"Schließen und Speichern?") = vbYes Then
'Wenn Mappe vor dem Schließen gespeichert wird,
'dann Sicherheitskopie
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
Save
Sheets.Copy
With ActiveWorkbook
.SaveAs Filename:=Pfad & Dname & Format$(Now, "yyyy-mm-dd - hh-mm"),  _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
.Close
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
Else
'Wenn Mappe vor dem SChließen NICHT gespeichert wird,
'dann KEINE Sicherheitskopie
Saved = True
End If
'Mappe wurde NICHT geändert oder bereits gespeichert
'Dann KEINE Sicherheitskopie
End If
End If
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Speichert eine Sicherheitskopie der Mappe (ohne Makros) bei jedem Speichern
'der Originalmappe, außer bei "Speichern unter..."
If Not ReadOnly And Not SaveAsUI Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Sheets.Copy
With ActiveWorkbook
.SaveAs Filename:=Pfad & Dname & Format$(Now, "yyyy-mm-dd - hh-mm"), FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
.Close
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Backup datei auto speichern je 4 oder 6 stunden.
04.01.2020 07:12:31
Luschi
Hallo Niko,
so wie Du die Daten retten willst, kann man doch nicht von einem Backup sprechen; es gehen viel zu viele Arbeitsmappen-Infos verloren:
- sämtliche Vba-Formulare, Standardmodule, selbst definierte Klassenmodule
- teilweise definierte Excelnamen, die arbeitsmappenweit gelten
- geänderte Schriftfarben, DocumentProperties, usw.
Um eine originalgetreue Kopie zu erstellen, gibt es den Befehl:
ThisWorkbook.SaveCopyAs Filename:="..."
und hat den Vorteil:
- das diese Sicherungskopie von Excel nicht geöffnet wird nach dem Anlegen
- den gleichen Dateityp hat wie das Original
Den Rest verrät Dir Google mit den Stichworten: vba excel timer einbauen.
Ich hoffe, daß Deine Leute wissen, daß das Speichern der eigenen Excelarbeit öfters (spätestens aller 10 min.) erfolgen sollte und es dafür eine Tastenkombination 'Strg + s' gibt, ansonsten kann das Alles ganz schnelle für die Katz sein.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Backup datei auto speichern je 4 oder 6 stunden.
04.01.2020 09:04:08
Niko
Hallo Luschi,
vorab vielen Dank für deine Antwort.
Soweit ich es mit dem vorhanden VBA Code ausprobiert habe, funktioniert es ohne Probleme. Meine dass die Backup Datei gleich ist wie die original Datei (so sieht es für mich als Laie wenigstens aus). Man kann dies auch an der eingefügten Datei ausprobieren…es sei denn ich mache ein denk Fehler :-).
Ich möchte doch nur das es jede 4 oder 6 stunden automatisch im Hintergrund eine Backup Datei erstellt die genau gleich ist wie das Original und bei speichern dieser backup Datei immer im Dateinamen das Datum eingefügt wird.
Es soll nicht bei runterfahren der Datei backup erstellen oder sonst wie, einfach nur wie oben genannt. Naja da Wort “einfach“ ist relativ was ich geschrieben habe, denn wenn es so einfach wäre hätte ich es selber machen können. Doch als totaler Laie in VBA kann ich höchsten eine copy/paste Funktion anfertigen, ohne sicher zu sein wie und was da gerade funktioniert :-(.
Wie auch immer, ein bisschen Hilfe wenn und wann einer kann, wäre mehr als nett…kann nicht mehr verlangen, habe immer so viel Hilfe hier bekommen :-)
Im voraus Vielen Dank,
Niko
Anzeige
AW: Backup datei auto speichern je 4 oder 6 stunden.
05.01.2020 14:39:30
Niko
Hallo an alle,
nach langen suchen und mit Hilfe von ein paar Freunden habe ich folgenden Code generiert der auch sicher Funktioniert :-).
Gebe es einfach weiter, falls jemand auch so etwas sucht.
Ps. Leute den der Code gefallen hat und ihn benutzt haben, könnten (wenn sie möchten) ein Feedback zurückgeben, in den sie einfach eine Antwort in diesen Beitrag eingeben…ein einfaches Hallo, Hi oder Danke reicht aus :-)
Danke,
Niko
Mit VBA Editor in die Arbeitsmappe...
Code:
Private Sub Workbook_Open()
Backup _
intHrs:=6, _
strPathIn:="C:\Path\To\Your\Folder"
End Sub
dann ein Modul erstellen und dieses addieren…
Code:
Dim Timer As Date
Dim strPathLoc As String
Sub Backup(Optional ByVal intHrs As Integer = 6, Optional strPathIn As String = "")
Dim strFile As String
Dim strExt As String
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If strPathLoc = "" Then
strPathLoc = IIf(strPathIn = "", ThisWorkbook.Path, strPathIn)
End If
If Right(strPathLoc, 1)  "\" Then strPathLoc = strPathLoc & "\"
strFile = objFSO.GetBaseName(ThisWorkbook.FullName) & "_" & Format(Now, "yyyymmdd_hhmmss")
strExt = objFSO.GetExtensionName(ThisWorkbook.FullName)
objFSO.CopyFile _
Source:=ThisWorkbook.FullName, _
Destination:=strPathLoc & strFile & "." & strExt
Timer = Now + TimeValue(IIf(intHrs 

In diesem Beispiel wird die Backup Routine jede 6 stunden automatisch aktiviert.
Die gespeicherte Backup Datei wird dieses Format ausgeben in den gewünschten Ordner.
"C:\Path\To\Your\Folder\YourFilname_04_01_2020_213000"
Anzeige
AW: Backup datei auto speichern je 4 oder 6 stunden.
05.01.2020 21:39:06
Luschi
Hallo Niko,

If strPathLoc = "" Then
strPathLoc = IIf(strPathIn = "", ThisWorkbook.Path, strPathIn)
End If
Hier wird der Else-Zweig von IIf nie ausgeführt, da die darüberliegende If-Afrage dafür sorgt, daß strPathIn = "" ist, um in die Verzweigung überhaupt zu gelangen; also es genügt:
strPathLoc = IIf(strPathIn = "", ThisWorkbook.Path, strPathIn)
Gruß von Luschi
aus klein-Paris
AW: Backup datei auto speichern je 4 oder 6 stunden.
06.01.2020 09:50:38
Niko
Hi Luschi,
vielen Dank für den Hinweis, werde ihn umsetzen :-)
Ps. Obwohl bei mir funktioniert es auch so...werde trotzdem deine Änderung nochmal umsetzen und sehen.
Danke,
Niko
Anzeige
AW: Backup datei auto speichern je 4 oder 6 stunden.
07.01.2020 08:58:58
Niko
Hi Luschi,
habe mich ein bisschen in den VBA Büchern herumgewälzt und ein paar Freunde gefragt und bin dann zum diesen Schluss gekommen...über den Else-Zweig. Falls ich doch auf den falschen Dampfer bin, bitte mich informieren, möchte schließlich den Dampfer wechseln :-)
strPathLoc ist eine Variable auf Modulebene (außerhalb der Unterroutine).
Wenn die Unterroutine zum ersten Mal ausgeführt wird (beim Öffnen der Arbeitsmappe), ist dies eine leere Zeichenfolge, und die if-Anweisung gibt WAHR zurück.
Der IIf-Befehl prüft dann, ob etwas an den optionalen Parameter strPathIn übergeben wurde, der standardmäßig eine leere Zeichenfolge enthält. Wenn in strPathLoc nichts übergeben wurde, wird ThisWorkbook.Path festgelegt, andernfalls wird strPathIn festgelegt.
Bei nachfolgenden Aufrufen der Unterroutine (6 Stunden später) wurde strPathLoc entweder auf ThisWorkbook.Path oder auf den Pfad festgelegt, den Sie beim ersten Ausführen übergeben haben, sodass die If-Anweisung False zurückgibt und der Rest des Codes ausgeführt wird wie normal.
Danke,
Niko
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige