Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Viele Ordner mit Macro umbenenen

Viele Ordner mit Macro umbenenen
15.09.2022 19:57:52
Herbie
Servus,
ich habe eine Frage an Euch bezüglich des Umbennens von einer großen Anzahl von Ordnern.
Auf meinem Laufwerk X: liegen in einer Struktur Vorgangsnummern in Unterordnern, die dringend in ein neues Format
umbenannt werden müssen. DIe umzubennennenden Ordner liegen in der 5 Ebene, sind nach Jahr Monat und Aufgabe untergliedert.
X:\Akten\2022\01 Januar\Aufträge\1234567\ X:\Akten\2022\02 Februar\Anträge\4567890\ X:\Akten\2022\02 Februar\Anträge\2345678\ Die Ordner, die aus einer 7-stelligen Zahl bestehen, müssen dringend in diese Form umbenannt werden:
X:\Akten\2022\01 Januar\Aufträge\CV-1234567-2022\ X:\Akten\2022\02 Februar\Anträge\CV-4567890-2022\ X:\Akten\2022\02 Februar\Anträge\CV-2345678-2022\ Es kommt also vor die Zahl ein CV- und nach die Jahreszahl -2022.Da es bestimmt 1000 Ordner sind wollte ich fragen, ob es dafür eine Lösung in VBA gibt, die mir das umbenennen erledigen kann. Eines gemeinsam haben alle umzubennende Ordner: Sie sind alle in der 5-Ebene und bestehen alle aus einer 7 stelligen Zahl. Alle anderen Ordner bleiben gleich!
Kann mir da jemand Schützenhilfe leisten?
LIeben Dank

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele Ordner mit Macro umbenenen
15.09.2022 20:09:30
Fennek
Hallo,
in der einfachsten Form kann der Ordner "C:\temp\12345" so umbenannt werden:

Name "C:\temp\12345" As "c:\temp\CV-12345-2022"
Mit FSO, Powershell etc geht es auch.
mfg
AW: Viele Ordner mit Macro umbenenen
15.09.2022 20:17:37
Herbie
Danke für Deine Message. Ich suche eine Funktion, um ALLE Ordner auf einmal umzubennen. Sowas wie eine Schleife über die 5. Ordnerebene...
AW: Viele Ordner mit Macro umbenenen
15.09.2022 21:43:22
Yal
Moin,
ich würde es eher mit einer DOS-Befehl machen:

for /f %i in ('dir "01 Januar\Aufträge\*.*" /b /ad') do ren "01 Januar\Aufträge\CV-%i-2022"
Verwendung auf eigene Gefahr.
VG
Yal
Anzeige
AW: Viele Ordner mit Macro umbenenen
15.09.2022 23:24:48
ralf_b
nimm dir den Totalcommander
damit kann man relativ einfach nach entsprechenden Ordnern suchen ,auch mittels regulärer Ausdrücke und nach Ordnerebenen eingegrenzt.
Anschließend das Suchergebnis mit dem Mehrfachumbenennen-Tool bearbeiten. fertig.
AW: Viele Ordner mit Macro umbenenen
15.09.2022 23:35:34
Herbie
Leider kann man auf dem Rechner im Geschäft keine weitere Software installieren - dh es muss leider vba sein :((
AW: Viele Ordner mit Macro umbenenen
15.09.2022 23:50:43
Rudi
Hallo,

Sub aaaa()
Dim oFSO As Object, oFldr As Object, oSFldr As Object
Const strFldr = "X:\Akten\2022\01 Januar\Aufträge"
Set oFSO = CreateObject("scripting.filesystemobject")
Set oFldr = oFSO.getfolder(strFldr)
For Each oSFldr In oFldr.subfolders
Name oSFldr As oFldr.Path & "\CV-" & oSFldr.Name & "-2022"
Next oSFldr
End Sub
Gruß
Rudi
Anzeige
AW: Viele Ordner mit Macro umbenenen
16.09.2022 00:09:41
Yal
@Rudi: endlich jemand, der liefert!
Damit wäre aber nur "01 Januar" behandelt.
Ich habe Rudis Skript als Basis genommen und ergänzt. Ich verwende aber lieber die Anbindung der Library "Microsoft Scripting Runtime" anstatt CreateObject. Ergebnis ist gleich.

Sub Verzeichnis_umbenennen()
'mit Anbindung (Extras,Verweise..) von "Microsoft Scripting Runtime"
Dim FSO As New FileSystemObject
Dim F1 As Folder 'Verzeichnis (=Folder) Ebene 1
Dim F2 As Folder
Dim F3 As Folder
Const cPfad = "X:\Akten\2022" '\01 Januar\Aufträge"
For Each F1 In FSO.GetFolder(cPfad).SubFolders 'üner alle Monate-Verzeichnisse gehen
For Each F2 In F1.SubFolders
Select Case F2.Name
Case "Aufträge", "Anträge"
For Each F3 In F2.SubFolders
F3.Name = "CV-" & F3.Name & "-2022"
Next F3
End Select
Next F2
Next F1
End Sub
VG
Yal
Anzeige
AW: Viele Ordner mit Macro umbenenen
16.09.2022 00:20:35
Herbie
Ihr seid wirklich spitze. Vielen Dank erstmal.
Aufträge und Anträge waren aber nur Beispiele … da gibt es in etwa 30 unterordner zu verschiedenen Kategorien … genauso wie 01 Januar bis 12 Dezember . kann man die auch noch verallgemeinern?
AW: Viele Ordner mit Macro umbenenen
16.09.2022 08:58:33
Herbie
Habe es hinbekommen: Verwende nun folgenden Code:

Sub umbenennen()
'Verzeichnis umbennen
'mit Anbindung (Extras,Verweise..) von "Microsoft Scripting Runtime"
Dim fso As New FileSystemObject
Dim F1 As Folder 'Verzeichnis (=Folder) Ebene 1
Dim F2 As Folder
Dim F3 As Folder
Const cPfad = "D:\Akte\2022\" '
For Each F1 In fso.GetFolder(cPfad).SubFolders  'über alle Monate-Verzeichnisse gehen
For Each F2 In F1.SubFolders                'über alle Arten gehen
For Each F3 In F2.SubFolders            'über alle Nummern gehen
If IsNumeric(F3.Name) Then
F3.Name = "CV-" & F3.Name & "-2022" 'Verzeichnis umbenennen
Else
Dim objFSO As Object
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
MakeSureDirectoryPathExists ("D:\Fehlerhaft\" & F1.Name & "\" & F2.Name & "\" & F3.Name & "\")
MsgBox ("Nachfolgendes Verzeichnis entspricht keiner konformen Struktur:" & vbCr & vbCr & cPfad & F1.Name & "\" & F2.Name & "\" & F3.Name)
objFSO.CopyFolder cPfad & F1.Name & "\" & F2.Name & "\" & F3.Name, "D:\Fehlerhaft\" & F1.Name & "\" & F2.Name & "\" & F3.Name
On Error Resume Next
objFSO.DeleteFolder cPfad & F1.Name & "\" & F2.Name & "\" & F3.Name, True
Set objFSO = Nothing
End If
Next F3
Next F2
Next F1
MsgBox "Fertig"
End Sub
Vielleicht kann jemand noch mal drüber schauen, bevor ich es auf die Originalordner laufen lasse. Funktioniert soweit ich es getestet habe....
Anzeige
AW: Viele Ordner mit Macro umbenenen
16.09.2022 09:34:32
Yal
Hallo Herbie,
cPfad & "\" & F1.Name & "\" & F2.Name & "\" & F3.Name ist F3.Path
Wegen der häufigen Verwendung wäre eine Variable nicht überflüssig.

RestPfad = "\" & F1.Name & "\" & F2.Name & "\" & F3.Name & "\"
Das Vorteil, mit Objekte zu arbeiten anstatt mit String, ist dass man auf deren Eigensschaften jederzeit zugreifen kann.
Wenn Du F3. eingibst und Strg+Leertaste drückst, bekommst Du durch sog. "Intellisense" alle Eigenschaften und Methoden des Objekt-Klasse "Folder" angezeigt.
Schau dir auch dazu den Objektkatalog (Anischt, Objektkatalog). Wirkt leicht erschlagend beim ersten Einstieg, bringt einem weiter, wenn man dran bleibt.
Funktioniert nur, wenn die Bibliothek angebunden ist. Mit CreateObject nicht :-P
On Error Resume Next gilt immer bis Ende des Subs. Es muss nicht eine zweite mal aufgerufen werden. Es sei denn, Du hast dazwischen einen On Error Goto 0 oder On Error Goto MeinSprungmarke.
VG
Yal
Anzeige
AW: Viele Ordner mit Macro umbenenen
16.09.2022 09:00:14
Yal
Hallo Herbie,
wenn alle Ordner umbenannt weden sollten, unabhängig des Namen der Ordner der Ebene 2 (Verzeichnis-Ebene wo "Aufträge", ... liegen) dann die 3 Zeilen Select Case, Case und End Select weglassen.
Sieht dann so aus:

Sub Verzeichnis_umbenennen()
'mit Anbindung (Extras,Verweise..) von "Microsoft Scripting Runtime"
Dim FSO As New FileSystemObject
Dim F1 As Folder 'Verzeichnis (=Folder) Ebene 1, Durch Konstante cPfad gegeben
Dim F2 As Folder 'Verzeichnis der Ebene 2: Anträge, Aufträge
Dim F3 As Folder 'Verzeichnis der Ebene 3: Verzeichnis die umbenannt werden sollten
Const cPfad = "X:\Akten\2022" '\01 Januar\Aufträge"
For Each F1 In FSO.GetFolder(cPfad).SubFolders 'üner alle Monate-Verzeichnisse gehen
For Each F2 In F1.SubFolders
For Each F3 In F2.SubFolders
F3.Name = "CV-" & F3.Name & "-2022"
Next F3
Next F2
Next F1
End Sub
Wenn einige Namen in Ebene 2 von der Umbenennung ausgeschlossen werden sollten, ist es dann einfacher einen "Case" für die Ausnahme einzurichten, wo nichts gemacht wird, und der Rest in einem Case Else:

Sub Verzeichnis_umbenennen()
'mit Anbindung (Extras,Verweise..) von "Microsoft Scripting Runtime"
Dim FSO As New FileSystemObject
Dim F1 As Folder 'Verzeichnis (=Folder) Ebene 1
Dim F2 As Folder
Dim F3 As Folder
Const cPfad = "X:\Akten\2022" '\01 Januar\Aufträge"
For Each F1 In FSO.GetFolder(cPfad).SubFolders 'üner alle Monate-Verzeichnisse gehen
For Each F2 In F1.SubFolders
Select Case F2.Name
Case "AusnahmeName1", "AusnahmeName1"
' hier wird nichts gemacht.
Case Else
For Each F3 In F2.SubFolders
F3.Name = "CV-" & F3.Name & "-2022"
'Debug.Print "Orig: " & F3.Path & ", Neu: " & "CV-" & F3.Name & "-2022"
Next F3
End Select
Next F2
Next F1
End Sub
Zum Testen kannst Du die Umbenennung in Kommentar setzen und den Debug.Print aktivieren. Ausgabe erfolgt in Direktfenster (Ansicht, Direktfenster)
VG
Yal
Anzeige
AW: Viele Ordner mit Macro umbenenen
16.09.2022 16:38:05
snb

Dim fs
Sub M_snb()
Set fs = CreateObject("scripting.filesystemobject")
M_snb_rec fs.GetFolder("X:\Akten\2022\01 Januar\Aufträge\")
End Sub
Sub M_snb_rec(it)
If Val(Right(it.Name, 5)) > 10000 Then it.Name = Replace(it.Name, Right(it.Name, 5), "CV_" & Right(it.Name, 5) & "_2022")
For Each it1 In it.SubFolders
M_snb_rec it1
Next
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige