Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien in Ordner umbenennen

Dateien in Ordner umbenennen
18.05.2008 20:41:00
Peter
Guten Tag
Ich habe verschiedene Ordner mit einer grösseren Anzahl Dateien i.d.R. nicht xls). Nun möchte ich pro Ordner die Dateinamen mit einer dreistelligen Zahl ergänzen (also die Dateien umbenennen). Dabei möchte ich jeweils die erste Zahl eingeben können, dann wird die Zahl immer um eine 1 erhöht.
Beispiel
Dateinamen alt:
aöla
asjf
aldjfölksjdfö
kdfjkjö
Dateinamen neu:
aöla 001
asjf 002
aldjfölksjdfö 003
kdfjkjö 004
Wer kann mir hier weiterhelfen?
Danke, Peter

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Ordner umbenennen
18.05.2008 21:21:06
Daniel
HI
das ist jetzt aber nicht zwingend ein Excel-Problem oder?
wenn alle Dateien eines Ordners umbenannt werden sollen, könnte es so funktioneren, du brauchst die DIR()-, NAME_AS_- und ein paar text-Funktionen:
Funktioniert so aber nur, wenn alle Dateien ne 3-stellige Dateiendung haben.
falls Unterverzeichnisse vorkommen, schau dir lieber nochmal die Hilfe zur DIR-Funktion an, damit diesese nicht auch umbenannt werden.

Sub Umbenennen()
Dim Pfad As String
Dim Nr As Integer
Dim Datei As String
Dim NameNeu As String
Pfad = "C:\DeinPfad\"
Datei = Dir(Pfad)
Do Until Datei = ""
Nr = Nr + 1
NameNeu = Pfad
NameNeu = NameNeu & Left(Datei, Len(Datei) - 4)
NameNeu = NameNeu & Format(Nr, " 000")
NameNeu = NameNeu & Right(Datei, 4)
Name Pfad & Datei As NameNeu
Loop
End Sub


Gruß, Daniel
PS nicht getestet

Anzeige
korrektur
18.05.2008 21:23:44
Daniel
sorry hab noch was vergesen:

Sub Umbenennen()
Dim Pfad As String
Dim Nr As Integer
Dim Datei As String
Dim NameNeu As String
Pfad = "C:\DeinPfad\"
Datei = Dir(Pfad)
Do Until Datei = ""
Nr = Nr + 1
NameNeu = Pfad
NameNeu = NameNeu & Left(Datei, Len(Datei) - 4)
NameNeu = NameNeu & Format(Nr, " 000")
NameNeu = NameNeu & Right(Datei, 4)
Name Pfad & Datei As NameNeu
 Datei = Dir()
Loop
End Sub


Anzeige
AW: korrektur
18.05.2008 21:28:00
Herbert
Hi,
sehr optimistisch, davon auszugehen, dass die Extension aus 4 Zeichen besteht.
mfg Herbert

AW: korrektur
18.05.2008 21:34:33
Daniel
Hi
tun sie ja auch fast immer (bei mir auf dem Rechener zumindest)
aber du darfst meinen Vorschlag ruhig für eine flexible Extensionszeichenanzahl optimieren, ich lerne gern dazu.
Gruß, Daniel

Anzeige
AW: korrektur
18.05.2008 21:37:34
Ramses
Hallo Herbert
Das dachte ich mir auch gerade, vor allem im Hinblick auf E2007 und sonstige neue Dateien.
Daher mein Vorschlag
Option Explicit

Sub Umbenennen()
    Dim Pfad As String
    Dim Nr As Integer
    Dim myExt As Integer
    Dim Datei As String
    Dim NameNeu As String
    Pfad = "C:\Data\"
    Datei = Dir(Pfad)
    Do Until Datei = ""
        Nr = Nr + 1
        NameNeu = Pfad
        myExt = InStrRev(Datei, ".", -1)
        NameNeu = NameNeu & Left(Datei, Len(Datei) - myExt)
        NameNeu = NameNeu & Format(Nr, "0000")
        NameNeu = NameNeu & Right(Datei, 4)
        Name Pfad & Datei As NameNeu
        Datei = Dir(Pfad)
    Loop
End Sub

Ausserdem war noch ein kleiner Fehler drin
Datei = Dir()
anstelle von
Datei = Dir(Pfad)
Gruss Rainer

Anzeige
AW: korrektur
18.05.2008 22:08:37
Daniel
Hi Ramses
ich weiß ja nicht, wie es in den neueren Excelversionen ist, aber bis 2002 ist Datei = Dir() auf jeden fall korrekt.
das "Dir()" bewirkt, daß die nächste Datei in der Liste gelesen wird, "Dir(Pfad)" würde immer die erste Datei aus der Liste ermitteln, dh. es wird immer die gleiche Datei umbenannt, und zwar in einer Endlosschleife (bis der Dateiname zu lang wird)
und wenn wir schon beim korrigiern sind, wenn die Dateiendung ne flexible Länge hat, dann nicht nur beim Abschneiden, sondern auch beim Wiederanfügen.
außerdem ermittelt InstrRev zwar die Position des Zeichens von rechts, nichtsdestotrotz wird das Ergebnis von LINKS gezählt (zumindest bis 2002), daher:

Sub Umbenennen()
Dim Pfad As String
Dim Nr As Integer
Dim myExt As Integer
Dim Datei As String
Dim NameNeu As String
Pfad = "C:\Data\"
Datei = Dir(Pfad)
Do Until Datei = ""
Nr = Nr + 1
NameNeu = Pfad
myExt = Len(Datei) - InStrRev(Datei, ".", -1) + 1
NameNeu = NameNeu & Left(Datei, Len(Datei) - myExt)
NameNeu = NameNeu & Format(Nr, "0000")
NameNeu = NameNeu & Right(Datei, myExt)
Name Pfad & Datei As NameNeu
 Datei = Dir()
Loop
End Sub


Gruß, Daniel

Anzeige
AW: korrektur
18.05.2008 22:15:37
Herbert
Hi,
auch wenn du hier wirklich tolle Hilfe leistest, stehen auch dir Recherche/Archiv zur Verfügung.
Einfacher als mit der FSO-Funktion GetExtensionName gehts nun wirklich nicht.
mfg Herbert

AW: korrektur
18.05.2008 22:29:00
Daniel
HI
sorry, aber den Befehl kenne ich nicht.
die Hilfe sagt mir zu "GetExtensionName" - "Schlüsselwort nicht gefunden"
aus dem Archiv finde ich auch nichts wirklich hilfreiches zum Thema.
Foren, in denen nur im Archiv gesucht und nicht gefragt wird, sind irgendwann tot, weil sich nichts tut.
Poste doch lieber mal ein kleines Codebeispiel, wie man in diesem Fall die GetExtensionName-Funktion korrekt einsetzt, dann haben alle Mitleser was davon und lernen dazu (was ja schließlich Sinn des Forums hier ist).
Gruß, Daniel

Anzeige
AW: korrektur
18.05.2008 22:59:47
Herbert
Hi,
"...Foren, in denen nur im Archiv gesucht und nicht gefragt wird..."
Davon war gar nicht die Rede, sondern von "auch", aus dem Archiv von K.Rola:

Function GetEx(Dateiname As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
GetEx = "." & fso.GetExtensionName(Dateiname)
End Function


mfg Herbert

Anzeige
AW: korrektur
18.05.2008 23:20:00
Daniel
Hi
ok, ich weiß jetzt bescheid, aber mal schaun, ob Peter mit dieser Information zurecht kommt und das in sein Programm einbauen kann.
Schließlich ist er der Fragesteller.
Aber ob die zusätzliche Funktion jetzt wirklich soviel einfacher ist als die von Ramses vorgeschlagene Lösung?
Peter wird dazu ja hoffentlich noch eine Rückmeldung geben.
Gruß, Daniel

Anzeige
Da hast du recht,..
18.05.2008 22:19:51
Ramses
Hallo
Das mit dem Dir() war mein Fehler, ... man sollte also ausprobieren, was man schreibt.
Das kuriose ist allerdings, dass InstrRev nicht funktioniert.
Habe das gerade ausprobiert, und es ergibt sich tatsächlich ein falsches Ergebnis.
Obwohl die Funktion den übergebenen String "umdrehen" müsste, funktioniert tatsächlich nicht mehr.
Warum das so ist, verstehe ich auch nicht. Auch bei einigen anderen Makros wo ich die Funktion verwende funktioniert das nicht mehr
Da bin ich ehrlich gesagt ratlos und staune mit grossen Augen !!
Da muss ich mal sehen, warum das nun so ist. Die Funktion ist eigentlich extra für diese Fälle gemacht.
Das grenzt die Funktionalität erheblich ein und macht das ganze problematisch, da nun der Dateiname keine 2 Punkte enthalten darf !!
Wenn du das sicherstellen kannst, dann vielleicht so
Option Explicit

Sub Umbenennen()
    Dim Pfad As String
    Dim Nr As Integer
    Dim myExt As Integer
    Dim Datei As String
    Dim NameNeu As String
    Pfad = "C:\Data\"
    Datei = Dir(Pfad)
    Do Until Datei = ""
        Nr = Nr + 1
        NameNeu = Pfad
        myExt = InStr(1, Datei, ".")
        NameNeu = NameNeu & Left(Datei, Len(Datei) - (Len(Datei) - myExt + 1))
        NameNeu = NameNeu & Format(Nr, "_0000")
        NameNeu = NameNeu & Right(Datei, Len(Datei) - (myExt - 1))
        Name Pfad & Datei As NameNeu
        Datei = Dir()
    Loop
End Sub

Gruss Rainer

Anzeige
AW: Da hast du recht,..
18.05.2008 22:50:00
Daniel
Hi
also die InstRev-Funktion kenne ich immer nur so, wie sie hier funktioniert.
- es wird as erste Zeichen von RECHTS ermittelt (dh. der Dateiname darf auch mehrere "." enthalten).
- die Postion des gefundenen Zeichens wird aber trotzdem von LINKS gezählt, dh
InstrRev("12.456.89", ".") = 7
das muss man wissen und wenn man die Position von RECHTS gezählt braucht, eben mit LEN entsprechend umrechnen.
Gruß, Daniel

Anzeige
Es gibt Tage....
19.05.2008 11:19:00
Ramses
Hallo
... da sollte man besser nicht antworten :-)
Du hast natürlich recht.
Gruss Rainer

AW: Es gibt Tage....
19.05.2008 22:48:00
Peter
Guten Abend
Ich konnte erst heute spät die Antworten lesen - und mein Problem lösen. Ganz herzlichen Dank an alle, die zur Lösung beigetragen haben.
Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateien in Ordner umbenennen mit Excel VBA


Schritt-für-Schritt-Anleitung

Um Dateien in einem Ordner mit Excel VBA umzubenennen, kannst du das folgende Makro verwenden. Es ermöglicht dir, eine dreistellige Zahl an die Dateinamen anzuhängen und die Zahlen automatisch zu erhöhen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Rechtsklick auf "VBAProject (deineDatei.xlsm)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub Umbenennen()
       Dim Pfad As String
       Dim Nr As Integer
       Dim Datei As String
       Dim NameNeu As String
       Pfad = "C:\DeinPfad\" ' Ändere den Pfad entsprechend
       Datei = Dir(Pfad)
       Do Until Datei = ""
           Nr = Nr + 1
           NameNeu = Pfad & Left(Datei, Len(Datei) - 4) & Format(Nr, " 000") & Right(Datei, 4)
           Name Pfad & Datei As NameNeu
           Datei = Dir()
       Loop
    End Sub
  4. Ändere den Dateipfad zu dem Ordner, in dem sich die Dateien befinden.

  5. Führe das Makro aus, indem du F5 im VBA-Editor drückst oder zurück zu Excel gehst und das Makro über Entwicklertools > Makros startest.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"
    Stelle sicher, dass der Pfad korrekt ist und die Dateien im angegebenen Ordner vorhanden sind.

  • Fehler: Endlosschleife
    Wenn du Dir(Pfad) statt Dir() verwendest, kann es zu einer Endlosschleife kommen. Stelle sicher, dass du den richtigen Code verwendest.

  • Problem mit Dateiendungen
    Falls die Dateien nicht immer eine vierstellige Endung haben, solltest du die Logik anpassen, um die Endung dynamisch zu ermitteln. Verwende InStrRev, um die Position des letzten Punktes zu finden.


Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch Tools von Drittanbietern oder die Eingabeaufforderung nutzen, um mehrere Dateien umzubenennen. Es gibt viele Softwarelösungen, die speziell für das Umbenennen von Dateien entwickelt wurden.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von VBA zum Umbenennen von Dateien:

  1. Umbenennen von Dateien mit einer spezifischen Endung:

    If Right(Datei, 4) = ".txt" Then
       ' Code zum Umbenennen der .txt-Dateien
    End If
  2. Dateinamen basierend auf einer Excel-Liste: Wenn du die neuen Dateinamen in einer Excel-Liste hast, kannst du diese Liste auslesen und die Dateien entsprechend umbenennen.


Tipps für Profis

  • Vor der Ausführung ein Backup erstellen: Es ist ratsam, ein Backup der Dateien zu erstellen, bevor du das Makro ausführst, um Datenverlust zu vermeiden.
  • Testen in einer sicheren Umgebung: Teste das Makro zuerst in einem Ordner mit Testdateien, bevor du es auf wichtige Dateien anwendest.
  • Verwendung von Option Explicit: Dies hilft, Fehler durch nicht deklarierte Variablen zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich das Makro für andere Dateitypen verwenden?
Ja, du kannst das Makro anpassen, um Dateien mit verschiedenen Endungen umzubenennen, indem du die Logik für die Endung änderst.

2. Wie kann ich die Anzahl der Ziffern im neuen Dateinamen ändern?
Ändere den Format-String in der Zeile Format(Nr, " 000") zu z.B. Format(Nr, " 00") für zwei Ziffern.

3. Gibt es eine einfache Möglichkeit, Dateien nur in einem bestimmten Ordner umzubenennen?
Ja, das oben angegebene Makro ist bereits so konzipiert, dass es alle Dateien in dem angegebenen Ordner umbenennt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige