Ein Fall für VBA 04.02.2021, 07:00 Uhr

Excel: Erstell- und Speicherdatum der Datei in der gewünschten Zelle anzeigen

Sie würden gerne in Excel in je einer Zelle das ursprüngliche Erstelldatum und das letzte Speicherdatum Ihrer Arbeitsmappe anzeigen. Hier können nur zwei kleine Makros helfen. Aber das ist recht einfach.
Eine Formel- oder Feldfunktion wie in Word gibts in Excel leider nicht fürs Einfügen des Erstell- oder Änderungsdatums. Mit zwei kleinen VBA-Makros gehts aber doch.
(Quelle: PCtipp.ch)
In Ihrer Excel-Tabelle würden Sie z.B. in Zelle D1 gerne das ursprüngliche Erstelldatum Ihrer Excel-Datei anzeigen. Und in H1 das letzte Speicherdatum, je nach Geschmack mit oder ohne Zeitangabe. Excel stellt hierfür leider keine einfache Formelfunktion bereit. Aber mit zwei kleinen VBA-Makros ist es ein Klacks.
Lösung: Öffnen Sie mit Alt+F11 den Visual-Basic-Editor. Doppelklicken Sie in der linken Spalte auf DieseArbeitsmappe.

Nur das Datum

Das erste Makro fügt das letzte Speicherdatum in die Zelle H1 ein. Ausserdem erscheint in Zelle D1 das Erstelldatum. Ändern Sie im Code die gewünschten Zielzellen, wenn die Erstell- bzw. Speicherdaten in einer anderen Zelle stehen sollen:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveSheet.Range("H1") = "Gespeichert: " & Format(Now, "dd.mm.yyyy")
End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    If Not Success Then ActiveSheet.Range("H1") = "Nicht gespeichert"
    ActiveSheet.Range("D1") = "Erstellt: " & Format(DieseArbeitsmappe.BuiltinDocumentProperties.Item("Creation date"), "dd.mm.yyyy")
End Sub
Die Makros fürs Erstell- und Speicherdatum, hier ohne die Zeitangaben
Quelle: PCtipp.ch

Datum inkl. Uhrzeit

Soll es nicht nur das Datum, sondern auch die Uhrzeit sein, greifen Sie zu den folgenden Varianten des Makros. Dies schreibt das Datum und die Uhrzeit der letzten Speicherung in die Zelle H1 und das Erstelldatum in D1 (auch diese allenfalls anpassen):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveSheet.Range("H1") = "Gespeichert: " & Now
End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    If Not Success Then ActiveSheet.Range("H1") = "Nicht gespeichert"
    ActiveSheet.Range("D1") = "Erstellt: " & DieseArbeitsmappe.BuiltinDocumentProperties.Item("Creation date")
End Sub
Der Makrocode für diese beiden Datumsvarianten im VBA-Editor
Quelle: PCtipp.ch
Wichtig: Nach dem Einfügen des Codes wird Excel Sie darauf aufmerksam machen, dass Sie die Datei nicht als gewöhnliche .xlsx-Datei speichern dürfen, sondern als .xlsm-Datei, in der Makros erlaubt sind: eine Excel-Arbeitsmappe mit Makros. Klicken Sie daher auf Speichern unter, navigieren Sie zum gewünschten Ordner und greifen Sie bei «Dateityp» zu Excel-Arbeitsmappe mit Makros (*.xlsm). Arbeiten Sie in Zukunft mit dieser neuen Mappe, in der die beiden Makros stecken.
Excel hat gemerkt, dass Sie Makrocode im VBA-Editor eingefügt haben und schlägt das Speichern im .xlsm-Format vor
Quelle: PCtipp.ch
Zurück im Code-Fenster klicken Sie auf Datei/Schliessen und zurück zu Excel. Speichern Sie die Datei, erscheinen die beiden Kalenderdaten mit oder ohne Zeitangabe in den angegebenen Zellen – je nachdem, welche Makrovariante Sie verwendet haben.
Hinweise: Die Makros werden jeweils beim Speichern der Datei automatisch ausgeführt. Hat Ihre Arbeitsmappe mehrere Blätter? In diesem Fall beachten Sie Folgendes: Die Datumseinträge erscheinen in den genannten Zellen (D1 und H1) zudem in jedem Tabellenblatt Ihrer Arbeitsmappe, sofern es das beim Speichern aktive Blatt ist. Das heisst beispielsweise: Wenn Sie in Tabelle3 sind, während Sie auf Speichern klicken, erscheinen Erstell- und Speicherdatum in deren Zellen D1 und H1. Befinden Sie sich stattdessen in Tabelle1, erscheinen die Daten beim Speichern in diesem. (PCtipp-Forum)
(Update 12.02.2021 mit Korrekturen und abschliessenden Hinweisen)



Kommentare
Avatar
nochEinAndreas
11.02.2021
Hallo Gaby, in deinem Artikel hast du unter der Überschrift "Nur das Datum" meinen Code von https://forum.pctipp.ch/index.php?threads/excel-speicher-datum-erstelldatum-automatisch-in-zelle-einfuegen.45110/post-248102 benutzt. Allerdings hast du ihn in 2 Makros auseinander gerissen. Das macht so keinen Sinn. Der erste Makro schreibt vor dem Speichern (beim Aufruf des Speicherfensters) das aktuelle Datum als Speicherdatum in die Zelle. Wenn der Benutzer dann aber das Speichern abbricht, darf das Datum ja da nicht stehen bleiben. Hier kommt der 2. Makro zum Zug: Der überprüft anhand der Variablen Success (nach Schließen des Speicherfensters) ob gespeichert wurde (True) oder abgebrochen (False). Wurde abgebrochen, wird das Speicherdatum, das vor dem Speichern in die Zelle eingetragen wurde überschrieben mit "Nicht gespeichert". In meiner Version des 2. Makros wird dann noch in eine andere Zelle das Erstelldatum eingetragen. In deiner Version hast du aber jetzt das Speicherdatum (oder eben "Nicht gespeichert") mit dem Erstelldatum überschrieben. Deine beiden Einzelmakros werden so nicht richtig laufen. Außerdem solltest du, wenn du die Makros als Ereignisprozeduren beibehältst, auch erwähnen, dass es eben solche sind, die automatisch beim Speichern der Mappe ausgeführt werden. Vielleicht kannst du an dem Artikel noch ein Bisschen was ändern. Danke und Gruß, Andreas

Avatar
Gaby Salvisberg
12.02.2021
Hallo Andreas Ups! Danke für den Hinweis! Änderung folgt. Und ich füge noch einen abschliessenden Absatz ein, der darauf aufmerksam macht, dass die jeweiligen Kalenderdaten in jedem Tabellenblatt erscheinen können, falls die Mappe mehrere hat bzw. dass sie beim Speichern ins gerade aktive Blatt geschrieben werden. [edit] @nochEinAndreas , die Korrekturen sind nun publiziert. Habs hier auch nochmals getestet; und es hat funktioniert. Herzliche Grüsse Gaby