File.DateCreated liefert Erstelldatum des Verzeichnisses statt der Datei
Hallo liebe Admins,
ich lese per VBA die Liste der Dateien eines Verzeichnisses ein. Gebraucht werden Dateiname.ext und Erstelldatum. Der folgende Code tut schon beinahe, was er soll, nur, dass er mir nicht das Erstelldatum der Dateien einliest, sondern das des Verzeichnisses. Was mache ich falsch?
Vielen Dank für Eure Hilfe!!
Spinnifex
ich lese per VBA die Liste der Dateien eines Verzeichnisses ein. Gebraucht werden Dateiname.ext und Erstelldatum. Der folgende Code tut schon beinahe, was er soll, nur, dass er mir nicht das Erstelldatum der Dateien einliest, sondern das des Verzeichnisses. Was mache ich falsch?
Sub Bild_Import()
Dim strFile, i, objFileSystem, objFile, strDir
strDir = "C:\Test\"
i = 1
Cells(i, 1).Value = "Dateiname"
Cells(i, 2).Value = "erstellt"
Range(Cells(i, 1), Cells(i, 2)).Font.Bold = True
On Error GoTo Ende:
ChDir strDir
strFile = Dir$(strDir + "*.*")
Do While strFile <> ""
i = i + 1
Cells(i, 1).Value = strFile
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(strFile)
Cells(i, 2).Value = objFile.DateCreated
strFile = Dir$()
Loop
ActiveSheet.Columns("A:C").AutoFit
Exit Sub
Ende:
MsgBox "Das angegebene Verzeichnis " + strDir + " existiert nicht!", vbCritical
End Sub
Vielen Dank für Eure Hilfe!!
Spinnifex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 299573
Url: https://administrator.de/contentid/299573
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
4 Kommentare
Neuester Kommentar
Moin spinnifex,
vermutlich bist du bzw. dein Schnipsel mit dem Befehl
Falls du das Makro in einem Excelsheet auf einem anderen Laufwerk gestartet hast.
Aus der VBA--Hilfe:
Aber den Fehler wirst du nicht sehen, wenn du den einzigen möglichen Fehler mit einer selbst geschriebenen Fehlermeldung vorsiehst.
Und ganz gruselig ist immer neue Erzeugen eines FileSystemObjects innerhalb einer Do-While-Schleife für jeweils 3 Millsekunden... .
Das trägt massgeblich zur Klimaerwärmung bei, hat aber wenig sittlichen Mehrwert,
Auch das krude Zusammenwürfeln von FileSystemObject-Methoden einerseits und den ChDir/Dir$-Relikten andererseits ist nicht wirklich ästhetisch.
Und warum die Sub nun ausgerechnet
Als mein Baby hätte sie wahrscheinlich den Namen
.
Grüße
Biber
vermutlich bist du bzw. dein Schnipsel mit dem Befehl
ChDir strDir
auf die Brettera gegangen.Falls du das Makro in einem Excelsheet auf einem anderen Laufwerk gestartet hast.
Aus der VBA--Hilfe:
Die ChDir-Anweisung wechselt das Standardverzeichnis, aber nicht das Standardlaufwerk.
Aber den Fehler wirst du nicht sehen, wenn du den einzigen möglichen Fehler mit einer selbst geschriebenen Fehlermeldung vorsiehst.
Und ganz gruselig ist immer neue Erzeugen eines FileSystemObjects innerhalb einer Do-While-Schleife für jeweils 3 Millsekunden... .
Das trägt massgeblich zur Klimaerwärmung bei, hat aber wenig sittlichen Mehrwert,
Auch das krude Zusammenwürfeln von FileSystemObject-Methoden einerseits und den ChDir/Dir$-Relikten andererseits ist nicht wirklich ästhetisch.
Und warum die Sub nun ausgerechnet
Bild_Import()
genannt wurde... *grybel*Als mein Baby hätte sie wahrscheinlich den Namen
MeeresRauschen()
bekommen, in etwa in dieser Form:Sub MeeresRauschen()
Dim i, fso, f, strDir
strDir = "D:\Temp\"
i = 1
Cells(i, 1).Value = "Dateiname"
Cells(i, 2).Value = "erstellt"
Range(Cells(i, 1), Cells(i, 2)).Font.Bold = True
On Error GoTo Tilt:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(strDir).Files
i = i + 1
Cells(i, 1).Value = f.Name
Cells(i, 2).Value = f.DateCreated
Next
ActiveSheet.Columns("A:C").AutoFit
Exit Sub
Tilt:
MsgBox "ErrNo #" & Str(Err.Number) & " " & Err.Description, vbCritical
End Sub
Grüße
Biber
Moin spinnifex,
Die Vermeidung von freundlichem Spott (als Ziel des selbigen) ist mir bisher in diesem Forum noch nicht gelungen.
Aber wahrscheinlich bin ich noch nicht lange genug dabei.
Bevor du meinen etwas umweltschonenderen Schnipsel antestest, ersetze doch mal in deinemGestunkele Code deine Msgbox()-Zeile durch meine.
Nur für die Nachwelt und aus Neugier, um mal den Fehler zu sehen.
Ab einer Codelänge >= 2 Zeilen faktisch ausgeschlossen.
Aber ich werde auf dein vorläufig endgültiges Ergebnis warten.
Danke für dein Feedback & Grüße
Biber
Die Vermeidung von freundlichem Spott (als Ziel des selbigen) ist mir bisher in diesem Forum noch nicht gelungen.
Aber wahrscheinlich bin ich noch nicht lange genug dabei.
Bevor du meinen etwas umweltschonenderen Schnipsel antestest, ersetze doch mal in deinem
Nur für die Nachwelt und aus Neugier, um mal den Fehler zu sehen.
... werde ich aber erst hier einstellen, wenn wirklich alles läuft.
Dieser Zustand lässt sich bestenfalls in einem Oneliner erreichen.Ab einer Codelänge >= 2 Zeilen faktisch ausgeschlossen.
Aber ich werde auf dein vorläufig endgültiges Ergebnis warten.
Danke für dein Feedback & Grüße
Biber