Speichern zur bestimmten Uhrzeit
#1
Hallo,

ich bin auf der suche nach folgender VBA-Lösung:

Ich würde gerne einen Makro generieren, der beim anklicken der Speicherfunktion (Speicherbutton) ganz normal speichert, wobei bestimmte Bedingungen erfüllt sein sollten.

1. Sollte ich in einem Zeitraum zwischen 05:00 Uhr und 06:00 Uhr der Speicherbutton betätigt werden, dann soll auch ein Makro (kopieren von Daten aus Tabelle in andere Tabelle) ausgeführt werden. Außerhalb
    dieser Uhrzeit soll aber nur gespeichert werden und das Ganze ohne das Makro. Das gleiche sollte auch in den Uhrzeiten von (13:00 Uhr bis 14:00 Uhr und 21:00 Uhr bis 22:00 Uhr) geschehen.
2. Wichtig wäre noch, das irgendwie registriert werden müsste, das in den Zeiträumen das Makro bereits ausgeführt wurde und dann nicht mehr die Bedingung greift das beim speichern das Makro mit ausgeführt wird. 
    Beispiel: Ich speichere um 14:10 Uhr und der Kopiervorgang wird dann mit ausgeführt, sollte ich aber um 14:45 Uhr nochmals auf speichern klicken sollte erkannt werden, das der Makro bereits ausgeführt wurde und 
                 nur das speichern ohne Makro ausgeführt wird, obwohl es in dem Zeitraum geschehen ist. Ich denke man müsste einfach irgendwas in eine bestimmte Zelle schreiben (evtl. kopiert) und das über eine Abfrage 
                 lösen. Aber ich weis es auch nicht.

Glaube das ist nicht ganz so einfach, wenn es überhaupt umzusetzen ist. Bin leider noch VBA Anfänger.

Die Frage ist, kann man so etwas umsetzen und wenn, wer kann mir dabei helfen ?

Liebe Grüße
Top
#2
Hallöchen,

ein Makro zum Speichern und kopieren kannst Du aufzeichnen. Siehe dazu auch in unserem Beispielbereich meinen Beitrag Excel-Word-Makrorekorder

Ein mehrfaches Speichern kannst Du mit entsprechenden Bedingungen am Anfang des aufgezeichneten Makros verhindern, z.B.

If Hour(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name)) = 5 Then Exit Sub
If Hour(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name)) = 14 Then Exit Sub
If Hour(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name)) = 22 Then Exit Sub

(Geht auch einiges eleganter, aber erst mal zum Einstieg ...)
Ebenso das Kopieren in der Zeit

If Hour(Now) = 5 Or Hour(Now) = 14 Or Hour(Now) = 22 And Then
'Kopieren
'...
End If
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
In “DieseArbeitsmappe” reinschreiben:


Code:
Option Explicit


Private Sub Workbook_Open()

Backup _
        intHrs:=6, _   ‘hier ist das backup auf 6 Stunden eingestellt
        strPathIn:="\\mein Pfad reinschreiben"

 
End Sub

In ein “Modul” reinschreiben:
Code:
Option Explicit

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, "ddmmyyyy_hhmmss")
    strExt = objFSO.GetExtensionName(ThisWorkbook.FullName)
   
    objFSO.CopyFile _
        Source:=ThisWorkbook.FullName, _
        Destination:=strPathLoc & strFile & "." & strExt
       
    Timer = Now + TimeValue(IIf(intHrs <= 9, "0" & intHrs, intHrs) & ":00:10")
    Application.OnTime _
        EarliestTime:=Timer, _
        Procedure:="Backup"

End Sub

 Damit löst man jede 6 stunden ein Automatischen Backup…die stunden und pfad müssten nur angepasst werden.
 
Helfe weil mir geholfen wurde, nach dem Motto: Helfe um dir geholfen zu werden.
 
Viel spaß :78:
Top


Gehe zu:


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