Herbers Excel-Forum - das Archiv
Dateien kopieren mit VBA
Betrifft: Dateien kopieren mit VBA
von: Thomas
Geschrieben am: 07.03.2005 12:13:23
Hallo liebe Excelhelfer,
ich habe ein kleines Problem und hoffe Ihr könnt mir helfen.
Mit folgendem Befehl kopiere ich mir eine Excel-Datei aus dem Netz von einem
Laufwerk in ein anderes.
fs.CopyFile "R:\Unterlagen\Prod\*.xls" _
"J:\Abteilung\Nachweise\Kopieordner\"
Bisher gabe es im Unterordner Prod auch nur eine xls-Datei, so das ich keine
Probleme beim Kopieren hatte.
Man hat aber zwischenzeitig mehrere xls-Datei in diesem Ordner eingefügt, die
sich alle nur durch das Ende des Dateinamens bzw. durch das Datum unterscheiden.
Beispiele:
Verzeichnis_alt.xls
Verzeichnis_neu.xls
Verzeichnis (gültig ab ....).xls
Und ich benötige immer nur die Datei mit dem jüngsten Datum.
Kann mir jemand bitte helfen, wie meine obige Zeile geänert werden muss, damit
ich immer nur die jüngste Datei kopiere?
Vielen Dank
Gruß
Thomas
Betrifft: AW: Dateien kopieren mit VBA
von: Bert
Geschrieben am: 07.03.2005 15:02:11
Sieh dir mal Application.Filesearch an, da gibts die Möglichkeit, Dateien sortiert
nach Datum auszugeben. Wenn du absteigend sortieren läßt, ist die erste gefundene
Datei immer die jüngste.
Bert
Betrifft: AW: Dateien kopieren mit VBA
von: Thomas
Geschrieben am: 07.03.2005 15:03:01
Hallo Thomas,
für einen Einzeiler kenne ich keine Lösung. Aber vielleicht hilft Dir dieses:
Const Max = 1024
Dim liste(Max) As String
pfad = "C:\deinpfad\"
liste(1) = Dir(pfad & "*.xls")
i = 1
Do
i = i + 1
liste(i) = Dir()
Loop Until liste(i) = "" Or i = Max
Min = FileDateTime(pfad & liste(1))
filenam = liste(1)
For j = 2 To i - 1
If FileDateTime(pfad & liste(j)) < Min Then
Min = FileDateTime(pfad & liste(j))
filenam = liste(j)
End If
Next
MsgBox (filenam) ' das ist die jüngste Datei
Viel Erfolg
Thomas
Betrifft: Danke Euch zwei, werds gleich probieren .T.
von: Thomas
Geschrieben am: 07.03.2005 15:27:53