Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kopieren

Kopieren
08.08.2006 08:30:43
nike
Hi,
ich bin's nochmal.
Nachdem ich mir ne Liste mit Ordnen gebaut habe (danke Udo)
kommt es nun doch noch etwas dicker.
Ich moechte die Ordner bzw Teile ihrer Inhalte kopieren.
Dafuer muss ich in jeden Ordner reinschauen und alle Dateien,
die ich darin finde in einen gleichnamigen Ordner
auf einem anderen Laufwerk kopieren.
Die Ordner (inkl. Inhalt), die ich darin finde
sollen nur kopiert werden, wenn sie mit Action anfangen
(z.B. Action1, Action2, ..., Action100)
oder vom 07.08.2006 sind - ja, genau, von gestern ;-)
Wenn mir nochmal einer zu diesem Problem helfen koennte
waere mir echt geholfen ;-)
Bye
Nike
P.S. Also in Kurzform:
In einem Oberordner sind mehrer Dateien, die sollen alle kopiert werden.
Zusaetzlich gibt es noch Unterordner, die sollen nur kopiert werden,
wenn sie auf gestern datiert sind oder mit "Action" anfangen.
Das ganze soll in einen neuen Oberordner, der genau so heisst,
wie das Original, nur auf nem anderen Laufwerk liegt...

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren
08.08.2006 09:46:17
Uduuh
Hallo Nike,
ich hoiffe, ich habe das richtig verstanden.

Sub OrdnerKopieren()
Dim oFS As Object, oFolder As Object, oSFolder As Object
Dim n As Integer
n = 1
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder("n:\test")
For Each oSFolder In oFolder.subfolders
If oSFolder.Name Like "action*" Or Int(oSFolder.datecreated) = DateValue("07.08.2006") Then
oSFolder.Copy "c:\temp\"
End If
Next
End Sub

Kopiert die Ordner, die mit Action anfangen oder gestern erstellt wurden. Wenn du die Ordner kopieren willst, die gestern geändert wurden, ersetze datecreated durch datelastmodified.
Gruß aus’m Pott
Udo

Anzeige
AW: Kopieren
08.08.2006 10:18:55
nike
Hi Udo,
oh shit ich bin echt schon zu lange raus, so wenig Zeilen?
Ich hab mir schon einen abgebrochen und noch nix brauchbares zustande gebracht ;-)
Dein Ansatz sieht schon mal ziemlich super aus, jetzt muss ich nur noch alle
Dateien, die ich unter test finde auch kopieren, nicht nur die Ordner,
die die Kriterien erfuellen ;-)
Danke auf jeden Fall schon mal fuer den Superanfang.
Das ganze geht dann ueber einige hundert Ordner,
die sollen entsprechend "ausgeduennt" kopiert werden ;-)
unter c:\temp\
liegen dann
c:\temp\Dat1
c:\temp\Daz2
c:\temp\Zzz3
...
c:\temp\Zonk999
und all diese Ordner muessen kopiert werden und ihr Inhalt entsprechend
ausgewaehlt auch kopiert werden ;-)
z.B.
c:\temp\Dat1\Action1\ nach D:\Dat1\Action1\
c:\temp\Dat1\Action2\ nach D:\Dat1\Action2\
c:\temp\Dat1\ini.txt nach D:\Dat1\ini.txt
c:\temp\Dat1\01234\ soll nicht nach D:\Dat1\01234\ weil von vorgestern ;-)
aber
c:\temp\Dat1\02345\ nach D:\Dat1\02345\ weil von gestern ;-)
Danke auf jeden Fall schon mal fuer Deinen Anfang.
Greetings in die Runde.
Bye
Nike
Anzeige
AW: Kopieren
08.08.2006 10:56:22
Uduuh
Hallo,
dann wird's ein wenig gröber. Ich denke mal drüber nach.
Vorsicht! Alle Aktionen mit dem Filesystemobject werden gnadenlos und ohne Rückfrage ausgeführt. D.h. ein .Copy überschreibt evtl. vorhandene Dateien.
Gruß aus’m Pott
Udo

AW: Kopieren
08.08.2006 11:13:56
nike
Hi,
ueberschreiben waer kein Problem ;-)
Ich bin am ueberlegen, ob ich in einem ersten Schritt
die Ordner in Spalte B rausschreibe und in Spalte A eine 1 reinschreibe,
wenn ich diesen Ordner kopieren moechte.
In einem 2ten Schritt wuerde ich dann das Kopieren anstossen.
Jeweils immer nur fuer die Ordner, die in Spalte A eine 1 haben,
alle anderen, die leer sind werden ignoriert.
So kann ich die Kopierorgie ueber mehrere "Sitzungen" verteilen,
da es ueber ein kreuzlahmes Netz geht und ein ganzer Sack voll Daten zu schaukeln ist ;-)
Wenn du nen Geistesblitz hast, waere cool.
Ich muss gestehen, ich komm nicht weiter...
- Mist, zu lange kein anstaendigen VBA-Spagetti-Code mehr fabriziert ;-)
Bye
Nike
Anzeige
AW: Kopieren
08.08.2006 12:45:50
Uduuh
Hallo Nike,
hier mal ein Vorschlag:

Sub ReadFolders()
Dim oFS As Object, oFolder As Object, oSFolder As Object, oSFolder2 As Object
Dim n As Integer, strFolder As String
n = 1
strFolder = "c:\temp"
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
For Each oSFolder In oFolder.subfolders
For Each oSFolder2 In oSFolder.subfolders
If LCase(oSFolder2.Name) Like "action*" _
Or Int(oSFolder2.datecreated) = DateValue("7.8.2006") Then
Sheets(1).Cells(n, 2) = strFolder & "\" & oSFolder.Name & "\" & oSFolder2.Name
n = n + 1
End If
Next
Next
End Sub


Sub CopyFolders()
Dim oFS As Object, oFolder As Object, oFolder2 As Object
Dim n As Long, strZiel As String
strZiel = "n:\test2"
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder("c:\temp")
If Dir(strZiel, vbDirectory) = "" Then
MkDir strZiel
End If
With Sheets(1)
For n = 1 To .Cells(65536, 2).End(xlUp).Row
If .Cells(n, 1) = 1 Then
Set oFolder2 = oFS.getfolder(.Cells(n, 2))
If Dir(strZiel & "\" & oFolder2.parentfolder.Name, vbDirectory) = "" Then
MkDir strZiel & "\" & oFolder2.parentfolder.Name
End If
oFolder2.Copy strZiel & "\" & oFolder2.parentfolder.Name & "\"
.Cells(n, 1) = "x"
End If
Next
End With
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Kopieren
08.08.2006 14:09:37
Nike
Hi Udo,
Hey, du Tier - super!
Danke Dir, da wird jetzt noch ein bischen drann verschlimmbessert ;-)
Aber super von Dir - Danke dir, echt.
Jetzt kann ich das Zeug seelenruhig ueber Nacht dahin laufen lassen
und weiss, ob's irgendwo abgebrochen ist und wenn ja,
wo ich wieder aufsetzen kann super.
Danke Dir.
Bye
Nike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige