Manipulation von Dateinamen via Excel

Ja, jetzt gibts mal ein bisschen Code. Ich bin kein guter Programmierer, bestenfalls ein Amateur, auch wenn ich im Büro hin und wieder Skripte in VBA schreibe und da kann man sicherlich einiges besser machen. Wer Kritik hat… nur zu! Ich lerne gerne 🙂

Eines dieser Skripte aus dem Büro möchte ich Euch nicht vorenthalten, denn dieses ist sehr universell nutzbar.

Ich war vor die Aufgabe gestellt, Dateien in Excel umbenennen zu können – im Batch, denn wir hatten mehrere hundert Dateien umzubenennen. Das Tabellenkalkulationsprogramm so zu verwenden scheint zwar auf den erstmal etwas abgwegig.  Tatsächlich hat Excel aber sehr mächtige Bordmittel, womit sich Texte in Zellen sehr einfach manipulieren lassen. So kann man mit dem Befehl =Verketten(A1;B1) zwei Zellen verketten. Daraus lässt sich als Beispiel eine fortlaufende Nummer vor den Namen heranhängen und die Nummern dazu kann man einfach laufend herunterkopieren. Auf weitere Funktionen wie =Teil() oder gar =SVERWEIS() will ich hier nicht eingehen, das würde den Rahmen für diesen Artikel sprengen.

Doch nun zurück zum Skript – hier ist es:


Option Explicit

Sub GetFiles()

 Dim wBook As Workbook
 Dim wSheet As Variant
 Dim strPath As String
 Dim strLoadfile As String
 Dim intWrite As Integer

 Set wBook = ThisWorkbook
 Set wSheet = wBook.Worksheets
 Set wSheet = ActiveSheet

 strPath = wSheet.Cells(1, 1)
 wSheet.Columns("A:A").ClearContents
 wSheet.Cells(1, 1) = strPath

 If Right(strPath, 1) <> "\" Then
   strPath = strPath & "\"
 End If

 intWrite = 3
 strLoadfile = Dir(strPath)

 If strLoadfile = "" Then
   MsgBox ("No File found or invalid path.")
   Exit Sub
 Else
   Do While strLoadfile <> ""
     wSheet.Cells(intWrite, 1) = strLoadfile
     intWrite = intWrite + 1
     strLoadfile = Dir
   Loop
 End If

 intWrite = 3
 strLoadfile = Dir(strPath)

 If strLoadfile = "" Then
   MsgBox ("No File found or invalid path.")
   Exit Sub
 Else
   Do While Range("B" & intWrite) <> ""
   Name strPath & Range("A" & intWrite) As strPath & Range("B" & intWrite).Value
   intWrite = intWrite + 1
   Loop
 End If

 MsgBox ("Renaming process completed.")
End Sub

Das Skript macht folgendes: Man legt in A1 den Pfadnamen des Ordners fest, in denen sich alle Dateien befinden, deren Namen man ändern will. Ein Button wird ins Excel-File gelegt, das mit


Private Sub CommandButton1_Click()

 Call GetFiles

End Sub

den oben stehenden Code aufruft und ausführt.

Das Skript wird dann den in A1 angegebenen Pfad auslesen und in die Spalte A schreiben. Als nächstes kann man in die Spalte B gleich daneben den gewünschten Namen hinschreiben. Soll eine Datei nicht umbenannt werden, kann der Name einfach von der Spalte A übernommen werden. So bald eine Zelle leer ist, bricht die Prozedur ab. Das Skript funktioniert nicht im Netzwerk, sondern nur lokal.

Advertisements