Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Makro einmal am Tag ausführen

VBA Makro einmal am Tag ausführen
06.02.2019 15:47:37
Sophie
Hallo,
ich habe ein funktionierendes Makro, das beim Öffnen einer Datei eine Sicherungskopie erstellt. Da diese Datei aber viele Nutzer am Tag öffnen, soll nicht jedes Mal eine Kopie erstellt werden, sondern nur einmal am Tag. Hat jemand eine Idee wie das zu lösen ist? Eventuell über Date?
Hier mein Code :
Private Sub Workbook_Open()
Dim SavePath As String
Dim FileName As String
Dim FileExtension As String
Dim FileDate As String
Dim FileBackupName As String
Dim temp As Date
SavePath = "C:\Users\sosautt\Desktop\AV-Sheets"
FileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
FileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
FileDate = Format(Now, "YYYYmmdd_hhmmss")
FileBackupName = SavePath & FileName & "_" & FileDate & "." & FileExtension
ActiveWorkbook.SaveCopyAs FileBackupName
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro einmal am Tag ausführen
06.02.2019 16:14:13
Beverly
Hi,
schreibe das Datum in eine Zelle und prüfe beim Öffnen, ob das dort eignetragene Datum verschieden von Date (Heute) ist - falls ja, dann Code ausführen, andernfalls Code nicht ausführen.


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Makro einmal am Tag ausführen


Schritt-für-Schritt-Anleitung

  1. Datum in eine Zelle schreiben: Wähle eine Zelle in deinem Arbeitsblatt, um das Datum der letzten Ausführung des Makros zu speichern, beispielsweise Zelle A1.

  2. Makro anpassen: Ändere dein bestehendes Makro, um beim Öffnen zu überprüfen, ob das Datum in der Zelle mit dem aktuellen Datum übereinstimmt. Hier ist ein Beispiel, wie der Code aussehen könnte:

    Private Sub Workbook_Open()
       Dim SavePath As String
       Dim FileName As String
       Dim FileExtension As String
       Dim FileDate As String
       Dim FileBackupName As String
       Dim LastBackupDate As Date
       Dim TodayDate As Date
    
       ' Set paths and filenames
       SavePath = "C:\Users\sosautt\Desktop\AV-Sheets\"
       FileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
       FileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
    
       ' Get today’s date
       TodayDate = Date
    
       ' Check last backup date
       If IsEmpty(Range("A1").Value) Then
           LastBackupDate = Date - 1 ' Set to yesterday if empty
       Else
           LastBackupDate = Range("A1").Value
       End If
    
       ' Backup only if today’s date is different from last backup date
       If LastBackupDate <> TodayDate Then
           FileDate = Format(Now, "YYYYmmdd_hhmmss")
           FileBackupName = SavePath & FileName & "_" & FileDate & "." & FileExtension
           ActiveWorkbook.SaveCopyAs FileBackupName
           Range("A1").Value = TodayDate ' Update the last backup date
       End If
    End Sub
  3. Makro speichern: Speichere deine Datei als Excel-Arbeitsmappe mit Makros (z.B. .xlsm).


Häufige Fehler und Lösungen

  • Fehler: Makro wird nicht ausgeführt
    Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros und aktiviere die Makros.

  • Fehler: Backup wird täglich erstellt
    Lösung: Überprüfe, ob das Datum in der Zelle korrekt aktualisiert wird. Achte darauf, dass die Zelle für das Datum nicht manuell geändert wird.


Alternative Methoden

Eine alternative Methode, um ein Makro einmal am Tag auszuführen, ist die Verwendung des Windows Taskplaners. Du kannst eine Batch-Datei erstellen, die Excel mit der entsprechenden Datei öffnet und das Makro ausführt. Dies erfordert jedoch zusätzliche Kenntnisse im Umgang mit dem Taskplaner.


Praktische Beispiele

Ein praktisches Beispiel könnte sein, dass du das Makro für eine wöchentliche Sicherung deiner Finanzdaten verwendest. Du kannst das Datum in einer Zelle festhalten und sicherstellen, dass das Makro nur einmal pro Woche ausgeführt wird, indem du den obigen Code entsprechend anpasst.


Tipps für Profis

  • Verwende eine benannte Zelle: Anstatt eine feste Zelle zu verwenden, kannst du eine benannte Zelle für das Datum einrichten. Das macht den Code flexibler und einfacher zu warten.

  • Fehlerprotokollierung einbauen: Implementiere eine einfache Fehlerprotokollierung, um Probleme beim Ausführen des Backups zu erkennen. Zum Beispiel könntest du den Fehler in einer anderen Zelle oder einer Protokolldatei speichern.


FAQ: Häufige Fragen

1. Wie kann ich das Makro manuell ausführen?
Du kannst das Makro manuell ausführen, indem du das VBA-Editor-Fenster öffnest (Alt + F11), das gewünschte Makro auswählst und auf "Ausführen" klickst.

2. Was passiert, wenn Excel geschlossen wird, bevor das Makro läuft?
Das Makro wird nicht ausgeführt, wenn Excel nicht geöffnet ist. Es wird nur beim Öffnen der Datei ausgeführt. Um sicherzustellen, dass die Sicherung täglich erfolgt, sollte die Datei jeden Tag geöffnet werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige