Clever-Excel-Forum

Normale Version: Dateinamen nach Kriterium umbenennen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Ralf,

Aus Prinzip sollte man den Einsatz von On Error auch auf den Part beschränken, wo man einen Abbruch vermeiden will.

Also in diesem Fall mall ganz eng
Code:
For ...
  On Error Resume Next
  Name ...
  On Error Goto 0
Next

Man braucht es aber hier gar nicht. Mit dem Dir-Befehl kannst Du zuvor prüfen, ob eine Datei existiert.

Code:
For ...
  If Dir(LW:\Pfad\Datei)<>"" Then ...
    Name ...
  End If
Next


Der Vollständigkeit halber, auch wenn es nun hier nicht genutzt wird - im Filesystem-Object gibt es fileexists.
Hallo Nora,

machs' doch einfach so:

Code:
Sub Dateien_Umbennen()
'Alle Dateien mit gerader Nummer umbenennen
Dim fs As Object, fVerz As Object
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder("C:\Sammlung")

For Each fDatei In fVerz.Files

If CInt(StrReverse(Mid(StrReverse(fDatei.Name), 4, 3))) Mod 2 = 0 Then
Name "C:\Sammlung\" & fDatei.Name As "C:\Sammlung\Neu_" & Right(fDatei.Name, 7)
End If
   
Next fDatei

End Sub

Anmerkung: Man muss auch bei einer völligen Neuinstallation nicht Angst vor Datenverlust auf Laufwerk C haben! Der Speicher sollte allerdings weder allokiert noch formatiert werden.
Windows schiebt alle alten Daten in ein eigenes Verzeichnis. Viel Spaß mit dem Code.
Hallöchen,

wenn man einmal im FileSystemObject steckt, kann man das Umbenennen auch damit machen.
Statt
Name "C:\Sammlung\" & fDatei.Name As "C:\Sammlung\Neu_" & Right(fDatei.Name, 7)
dann
fDatei.Name = "Neu_" & Right(fDatei.Name, 7)

Vorteilhaft wäre auch eine Prüfung das Dateinamens auf die erwartete Syntax. In der Frage habe ich nicht herausgelesen, dass ausschließlich Dateien nach dem Muster "Name_" und 3-stellige Zahl enthalten sind.
Alternativ könnte man alle betroffenen Dateien zur Umbenennung in ein gesondertes Verzeichnis verschieben oder alles was nicht dazu gehört.
Hallo Nora,

unter der Vorraussetzung, dass die Zahlen sich zwischen dem Unterstrich und dem Punkt vor der Dateinamenserweiterung befinden, könnte den Code auch so schreiben:

Code:
Sub DateienImVerzeichnis_Version2()
Dim fs As Object, fVerz As Object
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder("C:\Sammlung")

For Each fDatei In fVerz.Files
If CInt(Split(Split(fDatei.Name, ".")(0), "_")(1)) Mod 2 = 0 Then
fDatei.Name = "Neu_" & Split(fDatei.Name, "_")(1)
End If
Next fDatei

End Sub
Seiten: 1 2