Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1264to1268
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

Ordner automatisch umbenennen

Ordner automatisch umbenennen
Nico
Hallo zusammen!
Ich habe das Problem, dass sich in einem laufenden Projekt die Objekt-IDs geändert haben. Das würde für mich bedeuten, dass ich ca. 600 Ordner (1 Ordner pro Objekt) manuell umbenennen muss.
Gibt es die Möglichkeit, das Ganze automatisiert über ein Excel-Makro zu lösen? Mir schwebt folgende Idee vor:
In Spalte A steht die alte ID (A2 abwärts). In Spalte B steht die neue ID (B2 abwärts).
Die Excel-Datei würde ich im selben Ordner ablegen, in dem sich auch alle Objektordner befinden, so dass Excel den Speicherpfad der Ordner auslesen kann.
Jetzt möchte ich quasi per Knopfdruck die Ordnernamen aus Spalte A durch die aus Spalte B ersetzen.
Soweit die Theorie - nur umsetzen kann ich das leider gar nicht! Kann mir bitte jemand von euch helfen?
Vielen Dank schon mal!
Grüße,
Nico
AW: Ordner automatisch umbenennen
05.06.2012 11:21:00
haw
Hallo Nico,
das habe ich bei vb@rchiv gefunden:
Der folgende Code wird von vb@rchiv zur Verfügung gestellt:
http://www.visualbasic-archiv.de/archiv/tipp_details.php3?pid=207
Option Explicit
' KONSTANTEN DER FUNC
' Kopiert das File in pFROM nach pTo
Private Const FN_COPY = &H2&
' Löscht das File in pFrom (pTo wird ignoriert)
Private Const FN_DELETE = &H3&
' Verschiebt das File in pFROM nach pTo
Private Const FN_MOVE = &H1&
' Umbenennen des Files in pTo
Private Const FN_RENAME = &H4&
' KONSTANTEN DER FLAGS
' Undo Information -> Schiebt beim Löschen
' das (die) File(s) in den Papierkorb
Private Const FNF_ALLOWUNDO = &H40&
' Bislang keine bekannte Funktion
Private Const FNF_CONFIRMMOUSE = &H2&
' Handle zum Eltern-Fenster der
' Progress-Dialogbox (also Me.hwnd)
Private Const FnF_CREATEPROGRESSDLG = &H0&
' Nur Files - KEINE ORDNER - wenn *.* als Source
Private Const FnF_FILESONLY = &H80&
' Für diverse Stellen bei DEST (der "pTo" muss dann
' die gleiche Anzahl von Zielen aufweisen wie "pFrom"
Private Const FnF_MULTIDESTFILES = &H1&
' ANTWORTET AUTOMATISCH MIT 'JA für alle'
Private Const FnF_NOCONFIRMATION = &H10&
' Keine Abfrage für einen neuen Ordner, falls benötigt
Private Const FnF_NOCONFIRMMKDIR = &H200&
' Bei Namenskollisionen im ZIEL wird ein neuer Name
' erzeugt (z.B. Kopie(2) von xy.tmp)
Private Const FnF_RENAMEONCOLLISION = &H8&
' Zeigt keine Fortschritts-Dialogbox (fliegende Blätter)
Private Const FnF_SILENT = &H4&
' Zeigt die Fortschritts-Dialogbox an, aber ohne Filenamen
Private Const FnF_SIMPLEPROGRESS = &H100&
' Wenn FnF_RENAMECOLLISION gewählt wird,
' hNameMappings wird gefüllt (Anzahl)
Private Const FnF_WANTMAPPINGHANDLE = &H20&
' Eine Funktion für vier Dateioperationen
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) _
As Long
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
'***********Datei umbenennen
'Mit nachfolgender Routine kann eine Datei oder auch ein Verzeichnis in einen anderen Namen umbenannt werden.
Public Function fRename(Source As String, _
Dest As String) As Long
Dim FileStructur As SHFILEOPSTRUCT
With FileStructur
.wFunc = FN_RENAME
.pFrom = Check_NullChars(Source)
.pTo = Dest
.fFlags = FnF_RENAMEONCOLLISION + FnF_SILENT
End With
fRename = SHFileOperation(FileStructur)
End Function
Gruß
Heinz
Anzeige
AW: Ordner automatisch umbenennen
05.06.2012 12:01:19
Nico
Hallo Heinz,
vielen Dank für deine Antwort!
Leider muss ich aber gestehen, dass mir das nicht so ganz weiter hilft! Ich stehe mit VBA etwas auf dem Kriegsfuß und befürchte, ich brauche eine etwas genauere "Betriebsanleitung". :-)
Danke & Grüße,
Nico
AW: Ordner automatisch umbenennen
05.06.2012 12:20:13
haw
Hallo Nico,
es ist eigentlich recht einfach.
Kopiere den gesamten Code in ein neues Modul einer Datei.
Erstelle in derselben Datei eineigenes Makro:
Sub Ordner_Umbenennen()
fRename "C:\Daten\#test", "C:\Daten\#test2"
End Sub
Die beiden Pfade zu den beiden Ordnern (alt und neu) musst du natürlich anpassen!
Wie du ein Makro startest wirst du vermutlich wissen.
Gruß
Heinz
Anzeige
AW: Ordner automatisch umbenennen
05.06.2012 12:50:48
Nico
Hallo Heinz!
Das hilft auf jeden Fall schon mal weiter. Mein Problem ist aber dennoch folgendes: ich möchte ja nicht EINEN Ordner umbenennen, sondern 600! Excel soll sozusagen den Ordnernamen in A2 zu dem in B2 machen, den von A3 zu dem in B3, ..., und den in A601 zu dem in B601.
Ich brauche also so eine Art Schleife, oder?
Grüße,
Nico
AW: Ordner automatisch umbenennen
05.06.2012 12:57:00
Rudi
Hallo,
Sub aaaa()
Dim i As Long
For i = 2 To 601
Name Cells(i, 1) As Cells(i, 2)
Next
End Sub

AW: Ordner automatisch umbenennen
05.06.2012 14:43:16
haw
Hallo Rudi,
ich wusste nicht, dass Name auch mit Ordnern funktioniert!
Gruß
Heinz
Anzeige
AW: Ordner automatisch umbenennen
05.06.2012 14:58:39
Rudi
Hallo,
steht so in der Hilfe:
Name-Anweisung
Benennt eine Datei, ein Verzeichnis oder einen Ordner um.
Gruß
Rudi
AW: Ordner automatisch umbenennen
05.06.2012 15:05:22
haw
Hallo Rudi,
wieder was gelernt! Danke!
Ich dachte, wenn das im vb@archiv steht, werden die sich schon was gedacht haben ;-)
Heinz
AW: Ordner automatisch umbenennen
05.06.2012 14:40:45
haw
Hallo Nico,
da hast du natürlich recht.
Sub Ordner_Umbenennen()
Dim i%, lz%
lz = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lz
fRename Cells(i, 1).Value, Cells(i, 2).Value
Next i
End Sub
Die Schleife beginnt in der Zeile 2 und läuft bis zur letzten Zeile mit einem Eintrag in der Spalte A (lz)
Gruß
Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige