Excel und das ewige Erstelldatum «05.06.2015, 20:19 Uhr»

Falsches Datum richtigstellen

Man kann viele Felder ändern, aber «Inhalt erstellt» geht nicht. Zumindest nicht via Explorer-Dateieigenschaften
Quelle: PCtipp.ch
In der Bedienoberfläche von Excel und Windows suchen Sie vergeblich nach einer einfachen Möglichkeit, dieses Datum zu ändern. Etwa im Windows-Explorer im Reiter Details der Dateieigenschaften lassen sich zwar verschiedene Angaben ändern, etwa der Name des Autors, der Dokumentverwalter, Titel, Betreff und dergleichen (siehe Screenshot links). Aber der Zugang zu «Inhalt erstellt» bleibt Ihnen hier verwehrt; das Feld ist hier nicht beschreibbar.
Und doch ist es möglich. Auf diesen Hinweis ist die Autorin in einem uralten Thread in einem englischsprachigen Forum gestossen. Hier müssen Sie wieder zu VBA greifen; aber es ist kinderleicht und erfordert auch kein Speichern des Makro-Codes in der Datei.
So gehts: Öffnen Sie die betroffene Arbeitsmappe. Unter Datei/Informationen finden Sie jetzt noch das alte Erstelldatum, mutmasslich den 05.06.2015, 20:19. Klicken Sie oben links auf den Zurück-Pfeil.
Öffnen Sie mit Alt+F11 den VBA-Editor. In der linken Spalte klappen Sie bei Ihrer Datei (hier: Test.xlsx) den Zweig Microsoft Excel Objekte auf und doppelklicken auf DieseArbeitsmappe, damit sich ein leeres Code-Fenster öffnet.
Öffnen Sie den Code-Bereich Ihrer Arbeitsmappe
Quelle: PCtipp.ch
Wichtig: Sie werden das passende Makro (allenfalls mit angepasstem Datum) in der Datei nur einmal ausführen und dann gleich wieder löschen. Lesen Sie hierfür den Absatz «Ausführen und löschen».
Jetzt haben Sie verschiedene Möglichkeiten, je nachdem, was für ein Datum Sie brauchen. Kopieren Sie den Code der gewünschten Makrovariante hinein, allenfalls mit angepasstem Datumscode.
Datum von heute: Soll die Arbeitsmappe das heutige Datum als Erstelldatum erhalten? Dann greifen Sie zu diesem Code:
Sub ChangeDate()
ThisWorkbook.BuiltinDocumentProperties("Creation Date") = Date
End Sub
Bestimmtes Datum: Soll es ein bestimmtes Datum sein? Sie können das Datum nicht im für uns gängigen Format einfügen. Sie müssen zum Datumszähler von Excel greifen. Sie ermitteln diesen Code aber sehr einfach. Schieben Sie das VBA-Fenster kurz zur Seite, damit Sie die Excel-Tabelle sehen. Suchen Sie sich in Ihrer Tabelle eine unbenutzte Zelle und tippen Sie das gewünschte Datum ein, allenfalls gleich mit der Zeitangabe, etwa so: 31.12.2020 14:00:00. Drücken Sie Enter, zeigt Excel das Datum. Klicken Sie mit rechts auf die Zelle und wählen Sie Zellen formatieren. Wechseln Sie die Kategorie zu Standard (ganz oben) und klicken Sie auf OK.
Schon in der Vorschau sehen Sie das eingegebene Datum im Excel-internen Format der Datumszahl
Quelle: PCtipp.ch
Sie sehen, dass Ihr eingegebener Zeitstempel 31.12.2020 14:00:00 jetzt zu einem Datumscode wie beispielsweise 44196.5833333333 wird. Diesen brauchen Sie. Tippen Sie ihn ab oder kopieren Sie ihn aus dem Formelfeld Ihrer Datumszelle. Fügen Sie ihn im folgenden Makrocode anstelle unseres Beispiel-Datumscodes ein. Die Zelle, in der Sie das Datum ermittelt haben, können Sie in Ihrer Excel-Tabelle wieder leeren.
Damit sieht das Makro für unser Beispieldatum 31.12.2020 14:00:00 wie folgt aus; den Zeitstempelcode 44196.5833333333 müssen Sie darin natürlich durch den ersetzen, den Sie vorhin für Ihr gewünschtes Datum ermittelt haben:
Sub ChangeDate()
ThisWorkbook.BuiltinDocumentProperties("Creation Date") = 44196.5833333333
End Sub
Dieses Makro setzt das Erstelldatum der Excel-Arbeitsmappe auf den 31.12.2020, 14:00 Uhr
Quelle: PCtipp.ch
Automatisch das Windows-Erstelldatum nehmen: Nun ist Obiges aber etwas aufwändig, wenn Sie das Excel-Erstelldatum bloss ans tatsächliche Datei-Erstelldatum angleichen wollen, besonders, wenn es mehrere Dateien betrifft. Das Makro, um das Excel-Erstelldatum ans Datei-Erstelldatum anzupassen sieht etwas anders aus, weil es sich via Windows-Scripting-Host erst die Info zum Datei-Erstelldatum holen muss:
Sub ErstellDatumAnpassen()
    Dim fso As Object
    Dim datei As Object
   
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set datei = fso.GetFile(ActiveWorkbook.FullName)

ActiveWorkbook.BuiltinDocumentProperties("Creation Date") = datei.DateCreated
    
    Set datei = Nothing
    Set fso = Nothing
End Sub
Ausführen und löschen: Egal, für welche Makro-Variante Sie sich entschieden haben, das Vorgehen jetzt ist bei allen dreien gleich. Nach dem Hineinkopieren des Makrocodes setzen Sie den Cursor im Code-Feld mittels Ctrl+Home (Strg+Pos1) ganz an den Anfang des Codes. Klicken Sie oberhalb des eingefügten Makrocodes einmal aufs unscheinbare grüne Abspielsymbol für Sub/UserForm ausführen.
Hüpfen Sie ganz an den Anfang des Codes und klicken Sie aufs Play-Symbol
Quelle: PCtipp.ch
Auch wenn das Makro jetzt nichts für Sie Sichtbares getan hat, können Sie den Makrocode wieder löschen: Ctrl+A und Delete bzw. Strg+A und Lösch-Taste. Schliessen Sie das VBA-Fenster. Öffnen Sie wieder via Datei die Informationen. Ein Blick in «Relevante Datumsangaben» zeigt: Das Datum wurde angepasst. (PCtipp-Forum)
Das Datum und die Zeit bei «Erstellt» wurde angepasst. Dass anstelle von 14:00 Uhr jetzt 13:59 steht, liegt an einer Rundungsdifferenz
Quelle: PCtipp.ch



Kommentare
Avatar
rojowa
05.02.2021
Besten Dank für diesen hervorragenden Tipp!

Avatar
karnickel
06.02.2021
Zum Teil des Artikels mit dem "bestimmten Datum" hätte ich eine Verbesserung einzubringen, die einem den Umweg über den Float-Timestamp erspart: [CODE]ThisWorkbook.BuiltinDocumentProperties("Creation Date") = DateValue("26.11.1985") + TimeValue("01:25:33")[/CODE] Ausserdem fehlt am Anfang ein wichtiger Schritt, über den man stolpern kann. Beim Erzeugen der Datei mit dem Explorer und "Neu" - "Microsoft Excel Arbeitsblatt" muss man dieses erst öffnen und mit "Datei" - "Speichern unter..." gleich nochmals im Format "Excel Arbeitsmappe mit Makros ( *.xlsm)" ablegen. Von den zwei Dateien braucht man dann die erste gar nicht mehr. Will man die mit dem Erstelldatum behandelte Mappe danach auch wieder ohne Makros (VBA) verwenden, empfiehlt sich die Wiederholung der Replikation als Format "Excel Arbeitsmappe ( *.xlsx)". Ganz schön viel Klimbim für ein Datum, dass sich im Backstage wohl niemand gross anschauen wird. :unsure:

Avatar
Gaby Salvisberg
08.02.2021
Hallo karnickel Warum als *.xlsm speichern? Das Makro, um das Datum zu ändern, muss ja eben nicht in der Datei gespeichert, sondern bloss einmal ausgeführt werden :cool:. Es steht ja auch im Artikel. Kurzfassung: Ganz normale .xlsx-Datei öffnen, VBA-Editor öffnen, Makrocode reinwerfen, jetzt einmal via Play-Taste ausführen, Makrocode wieder löschen. Kein Speichern als *.xlsm nötig! Man kann z.B. die im Artikel zuletzt gezeigte Variante in die persönliche Makro-Arbeitsmappe stecken. Das wäre diese da: [CODE]Sub ErstellDatumAnpassen() Dim fso As Object Dim datei As Object Set fso = CreateObject("Scripting.FileSystemObject") Set datei = fso.GetFile(ActiveWorkbook.FullName) ActiveWorkbook.BuiltinDocumentProperties("Creation Date") = datei.DateCreated Set datei = Nothing Set fso = Nothing End Sub[/CODE] Fertig! Herzliche Grüsse Gaby