Mit VBA Dateien in einem Ordner umbenennen?
Ich habe es mithilfe vom Internet und einigen sehr wenigen Kenntnissen meinerseits geschafft, mir einen Code zu schreiben, mit dem ich Dateien (Fotos - also JPG-Dateien) umbenennen kann. Leider habe ich einen Teil des Codes gelöscht und dies gespeichert. Somit funktioniert leider gar nichts mehr und ich bekommen immer den Fehler, dass die Datei nicht gefunden werden kann. Die Meldung bekomme ich immer in der Zeile "Name File.Name As x".
Kann mir bitte jemand helfen?
Hier mein Code:
Shell "Explorer.exe C:\Users\LANGEMIC.HILTI\Documents\Temp, vbNormalFocus"
Set FS = CreateObject("Scripting.FileSystemObject")
Set Folder = FS.GetFolder("C:\Users\LANGEMIC.HILTI\Documents\temp")
Dim x As Single
x = ActiveCell
For Each File In Folder.Files
If File.Name Like ".jpg" Then
ActiveCell.Offset(1, 0).Select
x = ActiveCell
Name File.Name As x
End If
Next
End Sub
4 Antworten
Bei mir funktioniert es :-)
Sub abc()
Shell "Explorer.exe C:\abc, vbNormalFocus"
Set FS = CreateObject("Scripting.FileSystemObject")
Set Folder = FS.GetFolder("C:\abc")
Dim x As String
x = ActiveCell
For Each File In Folder.Files
If File.Name Like "*.jpg" Then
ActiveCell.Offset(1, 0).Select
x = ActiveCell
FS.MoveFile Folder.Path & "\" & File.Name, Folder.Path & "\" & x
End If
Next
End Sub
Du hattest verschiedene Fehler. Wie oben schon jemand geschrieben hat, hast du für eine Zeichenkette Single als Datentyp gewählt. Dieser Datentyp gehört für Zahlen. Du möchtest allerdings deine Zeichenkette, eben den Namen reinschreiben.
Die Name-Anweisung sagte mir spontan auch nichts. Müsste man mal ausprobieren, ob die "heute" noch funktioniert :-)
https://msdn.microsoft.com/de-de/vba/language-reference-vba/articles/name-statement
Ich verwende immer "movefile" aus dem Scripting Object. Da man umbennen will kann der Pfad identisch bleiben, nur der Name mus sich ändern.
Außerdem kannst du im Scripting object auch "GetExtensionName" verwenden um nur die Erweiterung zu erhalten.
Ggf muss in deinem Code "*.jpg" heißen anstatt nur ".jpg".
Ich verwende selten "like", daher nur eine Vermutung.
Setz einen Haltepunkt und schau, ob in x der korrekte, vollständige Name steht. Dann probier einmal eine Direktzuweisung:
File.Name = x
Du musst vor der Ausführung des Codes sicherstellen, dass die richtige Zelle aktiv ist. Du setzt während des Ablaufs die aktive Zelle um und liest den Wert aus.
Du definierst x als Single. Single ist ein Zahltyp. Der Dateiname sollte aber ein String sein.
Es gibt im übrigen das Umbennenungs Programm "BulkRename", dass als Freeware alle meine Umbennungsaufgaben bestens gemeistert hat.
Selbst ein Programm zu schreiben, welches dies alles kann wäre viel unnötige Arbeit.
Danke für die schnelle Hilfe! mit deinem Code funktioniert es jetzt Safur :D was an meinem falsch war weiss ich allerdings immer noch nicht.
Hat jemand noch einen Tipp wie ich jetzt wieder die Dateiendung .jpg dranbekomm?
LG und danke vielmals!