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

Forumthread: Datum abfragen

Datum abfragen
Horst
Hallo Excel-Freunde,
bei untenstehendem Makro wird das Erstellungsdatum einer .xls ausgelesen. Wenn dies nun dem Systemdatum entspricht soll eine MsgBox ausgegeben werden, sonst nicht. Irgendwie hinkt's an der Zeile
"If saveDate = Date$ Then" ... wie frage ich das Systemdatum korrekt ab?
Besten Dank vorab!
Sub Project()
Dim olapp As Object
Dim mybox As String
Dim objFSO As Object, objF As Object
Dim saveDate As Date
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objF = objFSO.GetFile("C:\test.xls")
saveDate = objF.DateLastModified
Set objF = Nothing
Set objFSO = Nothing
If saveDate = Date$ Then
MsgBox "Alles ok!"
Else
End If
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datum abfragen
25.11.2009 20:55:02
chris
Hallo,
versuchs mal so.
Sollte gehen.
Sub Project()
Dim olapp As Object
Dim mybox As String
Dim objFSO As Object, objF As Object
Dim saveDate As Date
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objF = objFSO.GetFile(ThisWorkbook.FullName)
saveDate = objF.DateLastModified
Set objF = Nothing
Set objFSO = Nothing
If Format(CDate(saveDate), "dd.mm.YYYY") = CDate(Date) Then
MsgBox "Alles ok!"
Else
End If
End Sub

Anzeige
AW: Datum abfragen
25.11.2009 21:54:21
Horst
geht leider nicht. Bei Format(CDate(saveDate), "dd.mm.YYYY") = CDate(Date) tut sich genauso wenig wie bei saveDate=Date. Hat noch wer eine Idee dazu?
AW: Date$ ?
25.11.2009 20:56:09
Daniel
wo kommt das Dollarzeichen her, ich kenne nur die Funktion DATE, aber nicht Date$
Gruß, Daniel
AW: Date$ ?
25.11.2009 21:49:10
Horst
das Date$ hab' ich aus der Hilfe, scheint Date ziemlich ähnlich zu sein.
Anzeige
AW: Date$ ?
25.11.2009 22:00:36
Daniel
hi
nein, ist eigentlich ziemlich unähnlich.
Date gibt einen Zahlenwert zurück, Date$ einen Textstring.
welche Variante du verwenden musst, hängt davon ab, welchen Datentyp dein Vergleichswert hat (bzw der Datentyp DATE ist ein numerischer Typ), da man Texte mit Zahlen nicht vergleichen kann.
auch wäre ich vorsichtig mit Date$, da du hier die Darstellungsform nicht beeinflussen kannst (dh Tag-Monat-Jahr oder Monat-Tag-Jahr).
Besser ist hier die Funktion FORMAT(DATE, "DD.MM.YYYY"), mit der du das einstellen kannst
gruß, Daniel
Anzeige
AW: Date$ ?
25.11.2009 22:18:48
Horst
danke fpr die Info, aber auch mit Format(Date, ...) klappt's nicht. Sonstige Vorschläge?
Date
25.11.2009 22:22:07
Matthias
Hallo
If Format(saveDate, "DD-MM-YYYY") = Format(Date, "DD-MM-YYYY") Then
Bei mir klappts.
Gruß Matthias
AW: Ganzzahl vs Dezimalzahl
25.11.2009 22:34:23
Daniel
Hi
grundsätzlich würde ich schon mit SaveDate und Date arbeiten ohne das ganze über Format() oder Date$ in Text zu wandeln.
das Problem an der Sache ist, daß SaveDate Datum und Uhrzeit beinhaltet und Date nur ein Datum ist.
wenn man sich ein bisschen mit dem Exceldatum auskennt, dann weiß man:
Datum = Ganzzahl, Uhrzeit = Nachkommastellen
dh. damit das ganze funktioniert, musst du für den Vergleich von SaveDate und Date die Uhrzeit - dh. die Nachkommastellen - aus SaveDate entfernen:
 If Int(saveDate) = Date Then

Gruß, Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Datum abfragen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um das Erstellungsdatum einer Excel-Datei abzufragen und mit dem Systemdatum zu vergleichen, kannst Du das folgende VBA-Makro verwenden:

Sub Project()
    Dim olapp As Object
    Dim mybox As String
    Dim objFSO As Object, objF As Object
    Dim saveDate As Date

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objF = objFSO.GetFile(ThisWorkbook.FullName)
    saveDate = objF.DateLastModified

    Set objF = Nothing
    Set objFSO = Nothing

    ' Vergleich des Datums
    If Int(saveDate) = Date Then
        MsgBox "Alles ok!"
    Else
        MsgBox "Das Datum stimmt nicht überein!"
    End If
End Sub

In diesem Beispiel wird das Erstellungsdatum der Datei mit dem aktuellen Systemdatum verglichen. Beachte, dass die Uhrzeit von saveDate entfernt wird, da Excel Datumswerte als Ganzzahlen speichert und Uhrzeiten als Nachkommastellen.


Häufige Fehler und Lösungen

  1. Fehler: "Typenkonflikt"

    • Dieser Fehler tritt auf, wenn Du versuchst, Date$ anstelle von Date zu verwenden. Das Dollarzeichen gibt einen Textstring zurück, während Date einen numerischen Wert liefert. Verwende einfach Date.
  2. Fehler: "Datum stimmt nicht überein"

    • Wenn der Vergleich nicht funktioniert, stelle sicher, dass Du die Nachkommastellen von saveDate entfernst, indem Du Int(saveDate) verwendest, wie im Schritt-für-Schritt-Beispiel gezeigt.
  3. Fehler: Ungültiger Dateipfad

    • Überprüfe, ob der Pfad zur Excel-Datei korrekt ist. Stelle sicher, dass die Datei existiert und Du die richtigen Berechtigungen hast.

Alternative Methoden

Eine alternative Methode, um das Datum abzufragen, könnte die Verwendung von Workbook.BuiltinDocumentProperties sein:

Sub GetCreationDate()
    Dim creationDate As Date
    creationDate = ThisWorkbook.BuiltinDocumentProperties("Creation Date")

    If Int(creationDate) = Date Then
        MsgBox "Die Datei wurde heute erstellt."
    Else
        MsgBox "Die Datei wurde nicht heute erstellt."
    End If
End Sub

Diese Methode ist einfacher, wenn Du nur das Erstellungsdatum benötigst, ohne auf das Dateisystem zugreifen zu müssen.


Praktische Beispiele

  • Beispiel 1: Überprüfung des Dateidatums Wenn Du eine Excel-Datei hast und sicherstellen möchtest, dass sie am aktuellen Tag gespeichert wurde, kannst Du das Makro aus der Schritt-für-Schritt-Anleitung verwenden.

  • Beispiel 2: Automatisierte Warnung Du könntest die MsgBox auch ändern, um eine automatisierte Warnung zu senden, wenn das Dokument nicht am aktuellen Datum gespeichert wurde. Dies kann nützlich sein, um sicherzustellen, dass Deine Dokumente regelmäßig aktualisiert werden.


Tipps für Profis

  • Nutze Debug.Print, um den Wert von saveDate während der Ausführung des Makros zu überprüfen. Das hilft Dir, Probleme schneller zu identifizieren.

  • Verwende das Format-Funktion, um Datum und Uhrzeit in einem bestimmten Format anzuzeigen, falls Du die Ausgabe für den Benutzer anpassen möchtest.

  • Achte darauf, dass Du immer die aktuellsten Versionen von Excel und VBA verwendest, um Kompatibilitätsprobleme zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Erstellungsdaten von verschiedenen Excel-Dateien abfragen? Du kannst das Makro anpassen, um eine Schleife zu verwenden, die durch ein Verzeichnis von Excel-Dateien iteriert.

2. Was ist der Unterschied zwischen Date und Date$? Date gibt einen numerischen Wert zurück, während Date$ einen Textstring zurückgibt. Verwende Date, um Typenkonflikte zu vermeiden.

3. Funktioniert dieses Makro in allen Excel-Versionen? Ja, das Makro sollte in den meisten Versionen von Excel funktionieren, die VBA unterstützen. Achte darauf, dass Du die entsprechenden Berechtigungen hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige