Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
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
Dateien kopieren
19.09.2008 07:45:00
Andre´
Hallo alle zusammen,
zum kopieren von Dateien von Ordner1 zu Ordner2 benutze ich folgendes Makro

Sub Kopieren()
Dim Quelle As String, ziel As String
Const ueberschreiben As Boolean = True
Quelle = "c:\1"
ziel = "c:\2"
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder Quelle, ziel, ueberschreiben
End Sub


Hier werden alle Dateien kopiert.
Mein Ziel ist es, dass nur die 2 letzt erstellten Dateien (jüngste Erstelldatum) kopiert werden.
Kann mir bitte jemand weiter helfen.
Danke im voraus!
MFG Andre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien kopieren
19.09.2008 08:40:20
Beverly
Hi Andre,
versuche es mal so

Sub dateien_kopieren()
Application.ScreenUpdating = False
With Application.FileSearch
.LookIn = "C:\Test\"
.Filename = "*.xls"
' ************von Bodo Schäfer
If .Execute(msoSortByLastModified, msoSortOrderDescending) > 0 Then
FileCopy .FoundFiles(1), "D:\Test\" & Mid(.FoundFiles(1), InStrRev(.FoundFiles(1), " _
\") + 1)
FileCopy .FoundFiles(2), "D:\Test\" & Mid(.FoundFiles(2), InStrRev(.FoundFiles(1), " _
\") + 1)
End If
End With
Application.ScreenUpdating = True
End Sub




Anzeige
AW: Dateien kopieren
19.09.2008 09:28:00
Andre´
Hallo Karin,
erstmals Danke für Deine Antwort.
Hab es mit Deiner Ordnerstruktur probiert, und das Makro bleibt beim ersten FileCopy stehen mit der Meldung: Dateiname oder Nummer falsch.
Dann gibt es noch ein weiteres Problem und zwar mit Application.FileSearch weil das Makro auch unter Excel 2007 funktionieren soll.
Es befinden sich nur TXT Dateien in dem Verzeichniss mit dem Namenaufbau: Jahr_Monat
z.B.
2008_06.txt
2008_07.txt
2008_08.txt
2008_09.txt

Vielleich gibt es eine Möglichkeit über die Namen zu gehen.
Es müsste also die Dateien die fett markiert sind kopiert werden.
Ich hoffe Du kannst mir weiter helfen!
MFG Andre
Anzeige
AW: Dateien kopieren
19.09.2008 11:32:12
Beverly
Hi Andre,
weshalb bei dir dieser Fehler kommt kann ich nicht nachvollziehen, bei mir funktioniert der Code fehlerlos.
Eine Möglichkeit ohne FileSearch - Voraussetzung ist, dass alle Dateinamen nach dem von dir vorgegebenen Schema aufgebaut sind:

Sub mehrere_arbeitsmappen_oeffnen()
Dim strVerzeichnis As String
Dim strDatei As String
Dim strTyp As String
Dim strDateiname As String
Dim loZeile As Long
Dim arrDateien()
Dim strDateiNeu As String
strTyp = "*.txt"
strVerzeichnis = "C:\Test\"
If Right(strVerzeichnis, 1)  "\" Then strVerzeichnis = strVerzeichnis & "\"
Application.ScreenUpdating = False
strDateiname = Dir(strVerzeichnis & strTyp)
loZeile = 1
Do While strDateiname  ""
ReDim Preserve arrDateien(0 To loZeile)
strDateiNeu = WorksheetFunction.Substitute(WorksheetFunction.Substitute(strDateiname, ". _
txt", ""), "_", "")
arrDateien(loZeile) = CLng(strDateiNeu)
strDateiname = Dir
loZeile = loZeile + 1
Loop
strDatei = Left(WorksheetFunction.Max(arrDateien), 4) & "_" & Right(WorksheetFunction.Max( _
arrDateien), 2) & ".txt"
FileCopy strVerzeichnis & strDatei, "D:\Test\" & strDatei
strDatei = Left(WorksheetFunction.Large(arrDateien, 2), 4) & "_" & Right(WorksheetFunction. _
Large(arrDateien, 2), 2) & ".txt"
FileCopy strVerzeichnis & strDatei, "D:\Test\" & strDatei
End Sub




Anzeige
AW: Dateien kopieren
19.09.2008 12:41:54
Andre´
Hallo Karin,

weshalb bei dir dieser Fehler kommt kann ich nicht nachvollziehen, bei mir funktioniert der Code fehlerlos.


habe nochmals Deinen Code getestet und musste feststellen, dass ich ein Leerzeichen mehr in der Zeile hatte.
Sorry
Dein jetziger Code funktioniert.
Ich wäre Dir aber sehr Dankbar, wenn Du mir doch noch eine Lösung ohne FileSearch geben könntest, wo dies nach dem jüngsten Erstelldatum realisiert werden kann.
MFG Andre

AW: Dateien kopieren
19.09.2008 12:53:00
Beverly
Hi Andre,
der zuletzt gepostete Code ist ohne Application.FileSearch. Es wird der Dateiname ausgelesen, in eine Zahl umgewandelt (also aus 2008_09.txt wird 200809), alles in ein Array eingelesen und mittels WorksheetFunction.Max und WorksheetFunction.Large die höchste und 2.höchste Zahl er mittelt. Anschließend werden diese beiden Zahlen wieder in den Dateinamen mit "-" zwischen Jahr und Monat + Dateiendung ".txt" zurückverwandelt und diese Dateien kopiert.


Anzeige
AW: Dateien kopieren
19.09.2008 13:16:28
Andre´
Hallo Karin,
Danke für Deine ausführliche Beschreibung.
Eigentlich wollte ich nur noch eine Lösung wo die Dateien nach dem jüngsten Erstelldatum kopiert werden (siehe Lösungsansatz von Deinem ersten Beitrag) aber halt ohne FileSearch.
MFG Andre
AW: Dateien kopieren
19.09.2008 14:35:00
Beverly
Hi Andre,
der 1. Lösungsansatz funktioniert nur im Zusammenhang mit Application.Filesearch. Du hattest ja dann den Vorschlag gemacht, den Dateinamen zu verwenden, welchen ich in dem zuletzt geposteten Code umgesetzt habe, der anstelle von Application.Filesearch mit Dir arbeitet, und das ist auch in Excel2007 anwendbar.
Die andere mir bekannten Methode zum Auslesen der Dateigenschaften (z.B. letztes Speicherdatum) erfordert ein Öffnen der Datei, was aber sicher nicht erwünscht ist.
Ich weiß, dass man Dateieigenschaften auch völlig anders auslesen kann (s. z.B. hier: http://clever-forum.de/read.php?11,159057,159062#msg-159062 ), aber mit dieser art habe ich mich noch nicht beschäftigt. Vielleicht kann dir ja ein anderer User weiterhelfen. Deshalb kennzeichne ich den Beitrag als offen.


Anzeige
AW: Dateien kopieren
19.09.2008 14:36:00
Beverly
sorry, Frage als offen vergessen


299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige