PDA

Vollständige Version anzeigen : VBA Datei mit Ordnernamen umbennen


DerEine
07.01.2008, 08:22
Hallo zusammen!

Ich komme direkt zu meinem Problem. Ich würde gerne eine Datei die sich in einem Ordner befindet mit dem Namen des Ordners umbennen. Allerdings sind nur die ersten 13. des Ordnernamens relevant.
Verzeichnisstruktur

Home
-> 0123456789123 - Titel (Ordner)
-> Datei.txt
-> 1234567890123 - Titel
-> Datei.txt
......

D.h. im Homeverzeichnis sind mehrere Ordner, die jeweils immer eine Datei enthalten. Diese sollen dann als Dateinamen den Ordnernamen (ersten 13 stellen - EAN) haben.

Vielen Dank für Eure Tips!

Gr33ts
DerEine

DerEine
07.01.2008, 15:27
OK...habe das Problem jetzt soweit gelöst. Hätte alleridngs noch eine Frage!
Wie kann ich Ordner in einem Verzeichnis zählen? Das ist jetzt das einzige Problem was ich noch habe.

_anton_
07.01.2008, 20:31
Hallo ,
so z.B.:
<span style="font-family: Courier New,FixedSys;"><br><span style="color: #0000CC;">Sub</span> b() <br>&nbsp; <span style="color: #0000CC;">Set</span> fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) &nbsp;<br>&nbsp; <span style="color: #0000CC;">Set</span> o = fso.GetFolder(&quot;C:\Windows&quot;) &nbsp; <span style="color: #009900;">'anpassen</span><br>&nbsp; MsgBox o.SubFolders.Count <br><span style="color: #0000CC;">End Sub</span> &nbsp;<br></span>
mfg Anton

DerEine
11.01.2008, 15:23
Hi!
Vielen Dank! Werde ich nachher umgehend einmal testen!

Nice we noch!

Greets

DerEine
14.01.2008, 18:30
Hallo...das hat jetzt alles super geklappt. Allerdings stoße ich jetzt auf das nächste Problem!

Ich will nun in einer Schleife für alle Ordner in einem Verzeichnis eine Datei im jeweiligen Ordner umbenennen.

anz_Folder = FolderCount(Pfad)

FolderName = Dir(Pfad, vbDirectory) ' Ersten Eintrag abrufen.
For n = 1 To anz_Folder
Do While FolderName <> "" ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If FolderName <> "." And FolderName <> ".." Then

' Hier Routine um Datei umzubenennen
' Barcode aus Namen axtrahieren
barcode = Mid(FolderName, 1, 13)
' Datei umbenennen
datei_alt = Pfad & FolderName & "\" '& "*.vob"
FileName (datei_alt)


End If
FolderName = Dir ' Nächsten Eintrag abrufen.

Loop
Next n

In der Funktion FileName findet das umbenennen statt.


DatName = Dir(Root, vbArchive)
While DatName <> ""

' Länge des Strings eritteln
länge = Len(DatName)
ext = Mid(DatName, länge - 3, 4)

' Vergleich auf Dateiendung (vob)
If ext = ".wmv" Then
'name_alt = Mid(DatName, 1, länge - 4)
DatName = Pfad & FolderName & "\" & DatName
name_neu = Pfad & FolderName & "\" & barcode & ".mpg"
Name DatName As name_neu

End If

'And (FileName <> ".") Then I = I + 1
DatName = Dir
Wend

Wenn ich allerdings aus dieser Funktion rauskomme, und im vorherigen Code für die Verzeichnisse bin, kann dies

FolderName = Dir ' Nächsten Eintrag abrufen.

nicht mehr aufgerufen werden.
Laufzeitfehler 5! Ungültiger Prozeduraufruf!
Denke es liegt daran, dass der fkt Dir nun ein anderer Wert durch die Fkt FileName übergeben wurde. Wie kann ich nun dieses Problem umgehen?

Greets
DerEine