Clever-Excel-Forum

Normale Version: Per function Änderungsatum einer varablen Datei auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe eine Exceldatei. In einer Spalte sollen die jeweiligen Änderungsdaten (Tag und Uhrzeit) einer Datei angezeigt werden.
Diese Datei steht im Verzeichnis "Wurstbrote" und setzt sich aus dem Dateinamen der Spalte "F" zusammen.
Ich habe daher folgende Function:

Code:
Public Function Date_Last_Modified(Pfad As Range) As Variant
    If Pfad <> "" Then
        If Dir$(ThisWorkbook.Path & "\Wurstbrote\" & Pfad & ".docx") <> "" Then
            Date_Last_Modified = CreateObject("Scripting.FileSystemObject"). _
                GetFile(Pfad).DateLastModified
        Else
            Date_Last_Modified = "Wurst wurde gegessen
         End If
    Else
        Date_Last_Modified = ""
    End If
End Function
In meiner Ausgabezelle habe ich dann "=Date_Last_Modified(F3)"
Leider kommt dann immer #WERT!
Wenn keine Datei da ist kommt, wie gewünscht, "Wurst gegessen".
Kann mir da jemand helfen?
Hallo,

vielleicht so:
Public Function Date_Last_Modified(Pfad As Range) As Variant
If Pfad <> "" Then
If Dir$(ThisWorkbook.Path & "\Wurstbrote\" & Pfad & ".docx") <> "" Then
Date_Last_Modified = CreateObject("Scripting.FileSystemObject"). _
GetFile(ThisWorkbook.Path & "\Wurstbrote\" & Pfad & ".docx").DateLastModified
Else
Date_Last_Modified = "Wurst wurde gegessen"
End If
Else
Date_Last_Modified = ""
End If
End Function
Gruß Uwe
Ich vermute der Typ für den Pfad in der Funktionssignatur ist falsch. Probier mal folgenden Code (Ich habe diesen nicht getestet):

Code:
Public Function Date_Last_Modified(Pfad As String) As string
   If Pfad <> "" Then
       If Dir$(ThisWorkbook.Path & "\Wurstbrote\" & Pfad & ".docx") <> "" Then
           Date_Last_Modified = cstr(CreateObject("Scripting.FileSystemObject"). GetFile(Pfad).DateLastModified)
       Else
           Date_Last_Modified = "Wurst wurde gegessen"
        End If
   Else
       Date_Last_Modified = ""
   End If
End Function
Hallo,

VBA bietet doch direkt (ohne shell) eine passende Funktion an:

Code:
FileDateTime(sPath & sFile)

mfg
Danke für die Müphe. Es funktioniert aber leider nicht.

@Kuwer
Jetzt kommt immer "Wurst wurde gegessen"

@JereMaia
Alles unverändert.

@Fennek
Ja das geht schon direkt aber da ich ja immer veränderte Dateinamen habe (Spalte F), benötige ich eine individuelle Funktion.
(18.12.2019, 21:39)barthi schrieb: [ -> ]@Kuwer
Jetzt kommt immer "Wurst wurde gegessen"

Meine Änderung ist dafür nicht verantwortlich!

Gruß Uwe
(18.12.2019, 21:44)Kuwer schrieb: [ -> ]Meine Änderung ist dafür nicht verantwortlich!

Gruß Uwe

Die Wege des Excel sind unergründlich...:D
ISt aber leider so, wenn ich deinen Code einfüge und die Ausgabezelle aktualisiere, kommt immer "Wurst wurde gegessen". Egal ob die Datei vorhanden ist oder nicht.
Hallo,

dann nimm Deinen geposteten Code zum Vergleich.

Gruß Uwe
Hallöchen,

Code:
Ich vermute der Typ für den Pfad in der Funktionssignatur ist falsch.
zuweilen geht probieren über studieren :17: Wenn man eine programmierte Funktion auf einem Arbeitsblatt verwendet übergibt man gelegentlich auch "Zellen" :100:

Barthi, nimm einfach mal ThisWorkbook.Path & "\Wurstbrote\" & Pfad & ".docx" in die Überwachung, lege einen Haltepunkt in den Code und vergleiche es mit Pfad und Name der Datei im Explorer.
@kuwer
Du hast recht, hat funktioniert. Danke!