2p
Goto Top

Datumsfunktion in Excel

Hallo.

Ich möchte mit Excel eine Vorlage erstellen. In einer Zelle soll dabei das Datum erscheinen (quasi "=HEUTE()" ). Nun zu dem Problem. Wenn ich anhand der Vorlage ein Arbeitsblatt erstelle und abspeichere liegt das aktuelle Datum vor - öffne ich diese Datei zu einem späteren Zeitpunkt wieder, wird das Datum jedoch wieder aktualisiert. Genau das möchte ich nicht. Ich suche also eine Funktion wie "ERSTELLDATUM" oder ähnliches. Wäre schön wenn jmd. so etwas kennt.

Bis dann ...

Content-Key: 56663

Url: https://administrator.de/contentid/56663

Printed on: April 23, 2024 at 23:04 o'clock

Member: miniversum
miniversum Apr 15, 2007 at 10:28:40 (UTC)
Goto Top
Du kannst dir ja, falls das geht, so eine Zellfunktion ERSTELLDATUM als macro selbst schreiben.

miniversum
Member: bastla
bastla Apr 15, 2007 at 13:32:58 (UTC)
Goto Top
Hallo 2P!

Da mir ohne Verwendung von VBA dazu keine Lösung bekannt wäre, finde ich miniversum's Idee gut. Allerdings scheint es so, als würde bei benutzerdefinierten Vorlagen in den Eigenschaften der daraus entstehenden Arbeitsmappe das Erstellungsdatum der Vorlage (.xlt) gespeichert.

Auf die Schnelle fiele mir dazu folgender Workaround ein: Vor dem Speichern der Vorlage das Erstellungsdatum auf 0 setzen, beim Öffnen der neuen Mappe auf Basis der Vorlage das Erstellungsdatum überprüfen und, falls noch 0 (was es eigentlich sein muss), auf das aktuelle Datum setzen sowie die dafür zuständigen Makros löschen.

Dazu wäre folgendes nötig:

Ein Modul für die Function zum Auslesen des Datums:
Function Erstellungsdatum()
Erstellungsdatum = ThisWorkbook.BuiltinDocumentProperties(11)
End Function
sowie die beiden folgenden Makros in "Diese Arbeitsmappe":
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.BuiltinDocumentProperties(11).Value = 0
End Sub

Private Sub Workbook_Open()
If ThisWorkbook.BuiltinDocumentProperties(11) = 0 Then
    ThisWorkbook.BuiltinDocumentProperties(11).Value = Now
End If
ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.DeleteLines 1, _  
ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.CountOfLines  
End Sub

Sehr elegant ist das nicht gerade, aber damit kann dann in einer Tabelle mit
=Erstellungsdatum()
oder über "Datei / Eigenschaften / Statistik" Datum (und Uhrzeit) der Erstellung der Arbeitsmappe ausgelesen werden.

Falls Du tatsächlich nur statisch in eine Zelle das Datum schreiben willst, müsstest Du im "Workbook_Open" nach dem "End If" folgende Zeilen einfügen:
With ThisWorkbook.Worksheets(1).Range("E2")  
    .Value = ThisWorkbook.BuiltinDocumentProperties(11)
    .NumberFormat = "mm/dd/yyyy"  
End With
Damit wird in die Zelle E2 der ersten Tabelle das Erstellungsdatum eingetragen und als Datum formatiert. In diesem Fall bräuchtest Du das oben beschriebene Modul mit der Function nicht zu erstellen.

Grüße
bastla

P.S.: Soviel übrigens zur Zuverlässigkeit der "Dateieigenschaften" in Office ...