in einem Verzeichnis stehen sehr viele Excel und Word- Dateien mit sehr langen Dateinamen. Ich möchte nun mittels VBA alle Dateinamen auf 8 Stellen kürzen.
Hat jemand eine Idee?
Gruß
Sonja
Sub kürzen()
Shell ("c:\excelword\name.bat")
End Sub
Sub kürzen()
Close
Open "c:\excelword\name.bat" For Output As #1
Print #1, "rename *.xls ?.xls"
Print #1, "rename *.doc ?.doc"
Close
Shell ("c:\excelword\name.bat")
End Sub
dir c:\*.xls /b/s/-p > tools.txt
Und bei Win XP klappt dieses auch nicht? Ich habe jett nur die Doshilfe zu 98 als Datei hier, nicht die von XP, kann also nichts nachvollziehen warum es dort nicht geht.
Gruß
Reinhard
Sub Rename_Files()
Dim tmpName As String, tarName As String, tarPath As String
Dim myFSO As Object, myFld As Object, myFldFiles As Object, myFile As Object
Dim docCounter As Integer, xlsCounter As Integer, renCounter As Integer
Dim i As Integer, fileCount As Integer
Dim myErr As Integer
On Error GoTo myErrorHandler
'Erstellen des FileSystemObjectes
Set myFSO = CreateObject("Scripting.FileSystemObject")
tarPath = InputBox("Bitte Verzeichnis angeben, indem die Daten umebeannt werden sollen", "Rename Action", "C:\DemoVerz")
If Not myFSO.folderexists(tarPath) Then
MsgBox "Der Ordner :"" " & tarPath & " "" existiert nicht.", vbCritical + vbOKOnly, "Abbruch"
Exit Sub
End If
docCounter = 0
xlsCounter = 0
renCounter = 0
myErr = 1
'Name schleife starten
Set myFld = myFSO.GetFolder(tarPath)
Set myFldFiles = myFld.Files
'Tage ab wann gelöscht werden soll
For Each myFile In myFldFiles
tmpName = myFile.Name
If Right(tmpName, 3) = "doc" Then
tarName = Left(tmpName, 8) & ".doc"
ElseIf Right(tmpName, 3) = "xls" Then
tarName = Left(tmpName, 8) & ".xls"
End If
NameRestart:
myFile.Name = tarName
renCounter = renCounter + 1
Next
MsgBox "Es wurden " & renCounter & " Dateien umbenannt"
'Fehlerbehandlung Ende
myErrorExit:
Exit Sub
'Fehlerbehandlung starten
myErrorHandler:
Select Case Err
Case 58
If Right(tmpName, 3) = "doc" Then
tarName = Left(tarName, 7) & docCounter & ".doc"
docCounter = docCounter + 1
ElseIf Right(tmpName, 3) = "xls" Then
tarName = Left(tarName, 7) & xlsCounter & ".xls"
xlsCounter = xlsCounter + 1
End If
Resume NameRestart
Case Else
MsgBox Err.Number & ": " & Err.Description, vbCritical + vbOKOnly, "Unerwarteter Fehler > Abbruch Rename Action"
Resume myErrorExit
End Select
End Sub
Um Dateinamen in einem Verzeichnis mithilfe von VBA zu kürzen, kannst du das folgende Skript verwenden. Es kürzt die Dateinamen auf 8 Zeichen für Excel- und Word-Dateien.
Sub Rename_Files()
Dim tmpName As String, tarName As String, tarPath As String
Dim myFSO As Object, myFld As Object, myFldFiles As Object, myFile As Object
Dim docCounter As Integer, xlsCounter As Integer, renCounter As Integer
Dim i As Integer, fileCount As Integer
Dim myErr As Integer
On Error GoTo myErrorHandler
'Erstellen des FileSystemObjectes
Set myFSO = CreateObject("Scripting.FileSystemObject")
tarPath = InputBox("Bitte Verzeichnis angeben, indem die Daten umbenannt werden sollen", "Rename Action", "C:\DemoVerz")
If Not myFSO.folderexists(tarPath) Then
MsgBox "Der Ordner :"" " & tarPath & " "" existiert nicht.", vbCritical + vbOKOnly, "Abbruch"
Exit Sub
End If
docCounter = 0
xlsCounter = 0
renCounter = 0
myErr = 1
'Name Schleife starten
Set myFld = myFSO.GetFolder(tarPath)
Set myFldFiles = myFld.Files
For Each myFile In myFldFiles
tmpName = myFile.Name
If Right(tmpName, 3) = "doc" Then
tarName = Left(tmpName, 8) & ".doc"
ElseIf Right(tmpName, 3) = "xls" Then
tarName = Left(tmpName, 8) & ".xls"
End If
myFile.Name = tarName
renCounter = renCounter + 1
Next
MsgBox "Es wurden " & renCounter & " Dateien umbenannt"
Exit Sub
myErrorHandler:
MsgBox Err.Number & ": " & Err.Description, vbCritical + vbOKOnly, "Unerwarteter Fehler"
Exit Sub
End Sub
Dieses Skript fragt nach dem Verzeichnis, in dem die Dateien umbenannt werden sollen, und kürzt die Dateinamen auf die ersten 8 Zeichen.
Fehler: "Ungültiger Prozeduraufruf oder ungültiges Argument"
Fehler: "Der Ordner existiert nicht."
Falls du eine schnellere Methode bevorzugst, kannst du auch eine Batch-Datei verwenden, um Dateinamen zu kürzen:
.bat
, z.B. name.bat
.rename *.xls ?.xls
rename *.doc ?.doc
Diese Methode ist besonders nützlich, wenn du viele Dateien auf einmal umbenennen möchtest und nicht auf VBA angewiesen sein willst.
.xls
und .doc
Dateien umbenennt, kann in verschiedenen Verzeichnissen mit rename
verwendet werden.FileSystemObject
-Klasse in VBA, um erweiterte Dateimanagement-Funktionen zu implementieren.Option Explicit
am Anfang deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind.1. Wie kann ich die Dateinamen auf mehr oder weniger als 8 Zeichen kürzen?
Ändere einfach die Zahl 8
im VBA-Code zu der gewünschten Länge.
2. Funktioniert das Kürzen von Dateinamen auch für andere Dateitypen?
Ja, du kannst das Skript anpassen, um auch andere Dateiformate zu berücksichtigen, indem du die Bedingungen entsprechend erweiterst.
3. Was passiert, wenn zwei Dateien denselben Namen haben?
Das Skript behandelt dies, indem es einen Zähler für die umbenannten Dateien hinzufügt, sodass es nicht zu Namenskonflikten kommt.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen