DateiRenamer nach Listenwerten
Breche mit gerade die Finger
Folgendes Problem:
Ich habe eine Reihe von Dateien (PDF), diese müssen anhand einer Liste (CSV) automatisch umbenannt werden.
Der Aufbau der Liste ist:
Wert1, Wert2,....Wertn, <Pfad zum Dokument>
Der Wert1 soll der Dateiname werden.
Ich stelle mir folgenden Ablauf vor:
Öffnen der CSV-Datei, auslesen der ersten Zeile, trennen der Werte, (Array?), dann umbenennen der Datei, auslesen der nächsten Zeile bis Ende.
Das sollte doch mit den FSOs möglich sein?
Gruß
Folgendes Problem:
Ich habe eine Reihe von Dateien (PDF), diese müssen anhand einer Liste (CSV) automatisch umbenannt werden.
Der Aufbau der Liste ist:
Wert1, Wert2,....Wertn, <Pfad zum Dokument>
Der Wert1 soll der Dateiname werden.
Ich stelle mir folgenden Ablauf vor:
Öffnen der CSV-Datei, auslesen der ersten Zeile, trennen der Werte, (Array?), dann umbenennen der Datei, auslesen der nächsten Zeile bis Ende.
Das sollte doch mit den FSOs möglich sein?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142979
Url: https://administrator.de/forum/dateirenamer-nach-listenwerten-142979.html
Ausgedruckt am: 30.04.2025 um 15:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo Vic666 und willkommen im Forum!
Ungetestet etwa so:
Da ich "Wert1" nicht kenne, habe ich in Zeile 10 noch dafür vorgesorgt, dass der Typ ".pdf" noch hinzugefügt werden muss - in diesem Fall einfach das Kommentarzeichen (') entfernen.
Nicht berücksichtigt (da von Dir auch nicht angesprochen) ist die Möglichkeit, dass es bereits eine gleichnamige Datei gibt.
Grüße
bastla
Ungetestet etwa so:
CSV = "D:\Deine CSV-Datei.csv"
Delim = "," 'Feldtrennzeichen
Set fso = CreateObject("Scripting.FileSystemObject")
T = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLf)
For Each Line In T
F = Split(Line, Delim)
Neu = F(0)
Alt = F(UBound(F))
If fso.FileExists(Alt) Then fso.GetFile(Alt).Name = Neu '& ".pdf"
Next
Nicht berücksichtigt (da von Dir auch nicht angesprochen) ist die Möglichkeit, dass es bereits eine gleichnamige Datei gibt.
Grüße
bastla
Hallo vic666!
Sollte ich das aber falsch interpretiert haben und der Zeilenumbruch innerhalb des Feldes entspricht nicht dem Umbruch am Zeilenende (da zB nur LF ohne CR), sollte sich das per "
Grüße
bastla
Es kann in der CSV-Datei passieren, das Werte innerhalb von Delimitern Zeilenumbrüche enthalten, d.h. das der String sich über mehrere Zeilen hintereinander verteilt:
Das wäre aber keine CSV-Datei mehr (da nicht mehr erkennbar, wo ein Satz = Zeile endet) - insofern wäre hier eher bei der Entstehung dieser seltsamen Datei anzusetzen ...Sollte ich das aber falsch interpretiert haben und der Zeilenumbruch innerhalb des Feldes entspricht nicht dem Umbruch am Zeilenende (da zB nur LF ohne CR), sollte sich das per "
Replace()
" reparieren lassen, also etwa:F = Split(Replace(Line,vbLf,""), Delim)
bastla

Hallo vic666,
da zum Umbenennen ja ein existierender Dateipfad als letztes Element gefunden werden muss, liest du solange Zeilen ein, bis das zutrifft.
Die dazwischen liegenden, fürs Umbenennen nicht nötigen Angaben verwirfst du.
Gruß
LotPings
da zum Umbenennen ja ein existierender Dateipfad als letztes Element gefunden werden muss, liest du solange Zeilen ein, bis das zutrifft.
Die dazwischen liegenden, fürs Umbenennen nicht nötigen Angaben verwirfst du.
Gruß
LotPings