Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
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

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

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

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige