Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien in Ordner kopieren: Frage zu Code

Dateien in Ordner kopieren: Frage zu Code
30.01.2013 13:25:52
Tobias
Hallo!
Unten stehender Code bewirkt folgendes:
In einem Ordner liegen Dateien im Format:
1_Frankfurt_Männer
1_Frankfurt_Frauen
2_Berlin_Männer
2_Berlin_Frauen
Mittels des Codes werden nun die Ordner "Frankfurt" und "Berlin" angelegt und die Dateien (Männer, Frauen) in den jeweilig zugehörigen Stadtordner kopiert.
Nun meine Frage:
1. Ich möchte bewirken, dass die Ordner nicht nach den Städtenamen, sondern nach der Nummerierung am anfang (1,2) benannt werden. Bspw. Ordner mit Namen "1" in dem die Dateien 1_Frankfurt_Männer und 1_Frankfurt_Frauen liegen usw.
2. Wenn die Nummerierung >9 ist, werden keine Ordner erstellt. Das liegt an diesem Codefitzel ("[0-9999]_*_*.*"), wenn ich daraus aber ("[0-9999][0-9999]_*_*.*") mache, werden nur die Ordner >9 erstellt. Wie schaffe ich es, dass alle erstellt werden, auch >99?
Ich hoffe, dass war einigermaßen klar ausgedrückt.
Wäre super, wenn mir da jemand helfen könnte.
Danke schonmal fürs duchlesen!
Tobi
Sub DateienInOrdnerKopieren()
'Kopiert Dateien des Musters 0_Text1_Text2.* in den Ordner "Test1"
Const strPfad = "C:\" 'Pfadname mit "\" am Ende !"
Dim fsoDateien As Object, fsoPfad As Object
Dim fsoObj As Object, fsoDatei As Object, strOrdner As String
Set fsoObj = CreateObject("Scripting.Filesystemobject")
Set fsoPfad = fsoObj.getfolder(strPfad)
Set fsoDateien = fsoPfad.Files
For Each fsoDatei In fsoDateien
If fsoDatei.Name Like "[0-9999]_*_*.*" Then
strOrdner = Split(fsoDatei.Name, "_")(1)
MakeSureDirectoryPathExists strPfad & strOrdner & "\"
FileCopy strPfad & fsoDatei.Name, strPfad & strOrdner & "\" & fsoDatei.Name
End If
Next
MsgBox "Fertig !"
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Ordner kopieren: Frage zu Code
30.01.2013 19:17:40
Dirk
ich kenn mich mit Like nicht wirklich aus.
ich würde es aber dann einfach so machen
Sub DateienInOrdnerKopieren()
'Kopiert Dateien des Musters 0_Text1_Text2.* in den Ordner "Test1"
Const strPfad = "Z:\tester\test\" 'Pfadname mit "\" am Ende !"
Dim fsoDateien As Object, fsoPfad As Object
Dim fsoObj As Object, fsoDatei As Object, strOrdner As String
Set fsoObj = CreateObject("Scripting.Filesystemobject")
Set fsoPfad = fsoObj.getfolder(strPfad)
Set fsoDateien = fsoPfad.Files
For Each fsoDatei In fsoDateien
If fsoDatei.Name Like "[0-99999]_*_*.*" Or fsoDatei.Name Like "[0-9999][0-9999]_*_*.*"  _
Then
strOrdner = Split(fsoDatei.Name, "_")(1)
MakeSureDirectoryPathExists (strPfad & strOrdner & "\")
FileCopy strPfad & fsoDatei.Name, strPfad & strOrdner & "\" & fsoDatei.Name
End If
Next
MsgBox "Fertig !"
End Sub
ach und noch ne Frage
Fehlt na nicht etwas Code?
sowas in der art?
Private Sub MakeSureDirectoryPathExists(path As String)
If Dir(path) = "" Then MkDir (path)
End Sub
Gruß
Dirk

Anzeige
AW: Dateien in Ordner kopieren: Frage zu Code
31.01.2013 10:14:34
Tobias
Hallo!
Super ich danke euch! Ich habe es jetzt hinbekommen.
@Dirk: Du hast recht, den codefitzel hatte ich vergessen. sorry!
VG und schönen Tag noch!

AW: Dateien in Ordner kopieren: Frage zu Code
30.01.2013 19:31:24
Christian
Hallo Tobi,
der Like-Operator kennt soweit ich weiß keine Wiederholung einzelner Ausdrücke sowie das mit Regular expressions möchlich ist.
Vorschlag:
With fsoDatei
If .Name Like "#_*_*.*" or .Name Like "##_*_*.*" or .Name Like "###_*_*.*" Then
End If
End With
Gruß
Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige