älteste Datei mit VBA Funktion DIR beginnen
Hallo leider komme ich mit der DIR Funktion nicht weiter,
wie bekomme ich es hin, mit älteste Datei im Ordner zu starten.
Mit
nimmt er leider nicht die älteste Datei.
Der gesamte Code sieht wie folgt aus
Vielleicht hat ja jemand eine Lösung
wie bekomme ich es hin, mit älteste Datei im Ordner zu starten.
Mit
sFile = Dir(sPath & "*cache*.zip", oa)
Der gesamte Code sieht wie folgt aus
Sub schritt1_cache_temp_zip_entpacken()
'für 7 zip
sevenzip = "c:\test\7za.exe"
destination = "C:\Test\Tempordner_zip\" ' Zielpfad
sPath = "C:\Test\ASP_Dateien\" ' QuellPfad setzen.
sFile = Dir(sPath & "*cache*.zip", oa) ' Ersten Eintrag abrufen.
Do While sFile > vbNullString ' Schleife beginnen.
' entpacken 7 Zip
'für das Kopieren
'x = Shell(sevenzip & " e " & sPath & sFile & " -o" & destination)
ShellAndWait (sevenzip & " e -y " & sPath & sFile & " -o" & destination)
'lngFN = FreeFile
'Open For Binary As lngFN
'FileCopy (sPath & sFile), "C:\Test\bbb\" & sFile
sFile = Dir ' Nächste Datei aufrufen.
Loop
End Sub
Vielleicht hat ja jemand eine Lösung
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203856
Url: https://administrator.de/forum/aelteste-datei-mit-vba-funktion-dir-beginnen-203856.html
Ausgedruckt am: 08.04.2025 um 05:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo thomas1972,
die Dir Funktion selbst kann das nicht (btw: was bedeutet das
Probiere es mal mit einer virtuellen Datenbanktabelle, in die du Name und Datum der Datei einträgst und anschließend nach Datum sortierst:
Deinen Code packst du also in die While-Wend-Schleife und arbeitest mit
Grüße
rubberman
PS: (Nur als Tipp) Leuten, die Feedback geben, versuche ich auch beim nächsten mal wieder zu helfen.
die Dir Funktion selbst kann das nicht (btw: was bedeutet das
oa
in deinem Code?).Probiere es mal mit einer virtuellen Datenbanktabelle, in die du Name und Datum der Datei einträgst und anschließend nach Datum sortierst:
Sub test()
Const sPath As String = "C:\Test\ASP_Dateien\"
Const adChar As Integer = 129
Const adDouble As Integer = 5
Dim oADORec As Object
Dim sFile As String
Dim aFields() As Variant, aValues() As Variant
Set oADORec = CreateObject("ADODB.Recordset")
oADORec.Fields.Append "Name", adChar, 1024
oADORec.Fields.Append "Date", adDouble, 8
oADORec.Open
aFields = Array("Name", "Date")
sFile = Dir(sPath & "*cache*.zip")
Do While sFile > vbNullString
aValues = Array(sFile, CDbl(FileDateTime(sPath & sFile)))
oADORec.AddNew aFields, aValues
sFile = Dir
Loop
oADORec.Sort = "Date ASC"
While Not oADORec.EOF
MsgBox oADORec("Name") 'statt der Messagebox, hier dein Code
oADORec.MoveNext
Wend
oADORec.Close
Set oADORec = Nothing
End Sub
Deinen Code packst du also in die While-Wend-Schleife und arbeitest mit
oADORec("Name")
statt mit sFile
.Grüße
rubberman
PS: (Nur als Tipp) Leuten, die Feedback geben, versuche ich auch beim nächsten mal wieder zu helfen.
Hallo thomas1972,
Die Dir Funktion durchsucht nicht rekursiv. Das bedeutet, wenn du als Pfad "C:\Test\ASP_Dateien\" angegeben hast, wird auch nur dieses Verzeichnis durchsucht, nicht aber die Unterverzeichnisse.
Ich weiß nicht, ob ich dich richtig verstanden habe, aber du schreibst dass die Datei zB. in "C:\Test\ASP_Dateien\a\" ankommt.
Grüße
rubberman
Die Dir Funktion durchsucht nicht rekursiv. Das bedeutet, wenn du als Pfad "C:\Test\ASP_Dateien\" angegeben hast, wird auch nur dieses Verzeichnis durchsucht, nicht aber die Unterverzeichnisse.
Ich weiß nicht, ob ich dich richtig verstanden habe, aber du schreibst dass die Datei zB. in "C:\Test\ASP_Dateien\a\" ankommt.
- Ist es so, dass du rekursiv in allen Unterverzeichnissen suchen musst?
- Hast du mal versucht genau dieses Verzeichnis "C:\Test\ASP_Dateien\a\" in sPath anzugeben?
Grüße
rubberman