Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.08.2014
Version(en): 2013
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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.08.2014
Version(en): 2013
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