ich würde mich freuen, wenn Ihr mir bei mein Problemen helfen könntet.
Ich habe ein Makro geschrieben um den Datumsteil im Dateinamen umzustellen. Das Makro soll alle csv-Dateien im Verzeichnis abarbeiten bis es am Ende der Dateinamen leer ist.
Bei kurzen Test läuft es auch. Im Ernstfall mit vielen Dateien werden vereinzelt bereits umbenannte Dateien erneut umbenannt, was dann zu Fehlern im Dateinamen führt. Wie kommt es zu dem Verhalten und wie kann ich dieses vermeiden?
Mit einer if-Abfrage kann ich prüfen ob die Struktur stimmt, wenn nicht wird die Datei übersprungen - eine Möglichkeit.
Mir geht es aber darum das Problem zu verstehen warum eine bereits bearbeitete Datei in der Ablaufreihe erneut auftaucht. Fehler in der Loop-Abfrage?
Der Code basiert auf der Lösung von Thorsten aus https://www.herber.de/forum/archiv/680to684/680449_Dateinamen_auslesen_und_aendern_mit_VBA.html
Sub DateiName_csv()
lstrDatName = Dir(ThisWorkbook.Path & "\*.csv")
Do Until lstrDatName = ""
Debug.Print lstrDatName
lstrAlterDatname = lstrDatName
Links1 = Left(lstrDatName, InStrRev(lstrDatName, "_") - 1)
Debug.Print Links1
Rechts1 = Right(lstrDatName, Len(lstrDatName) - InStrRev(lstrDatName, "_"))
Debug.Print Rechts1
Links2 = Left(Links1, InStrRev(Links1, "_") - 1)
Debug.Print Links2
Rechts2 = Right(Links1, Len(Links1) - InStrRev(Links1, "_")) 'Datum
Debug.Print Rechts2
Tag = Left(Rechts2, 2)
Debug.Print Tag
Mon = Mid(Rechts2, 4, 2)
Debug.Print Mon
'If InStr(Mon, "-") = 0 Then '> 0 Then GoTo Nächste
Jahr = Right(Rechts2, 4)
Debug.Print Jahr
'If InStr(Jahr, "-") = 0 Then '> 0 Then GoTo Nächste
lstrDatName = Links2 & "_" & Jahr & "-" & Mon & "-" & Tag & "_" & Rechts1
Debug.Print lstrDatName
Name ThisWorkbook.Path & "\" & lstrAlterDatname As ThisWorkbook.Path & "\" & lstrDatName
'Name lstrAlterDatname As lstrDatName
'Else
'Else
'Nächste:
lstrDatName = Dir
Debug.Print ""
Debug.Print ""
Loop
End Sub
Danke für Eure HilfeMiSchi