Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

"For Each" für Datein ???

"For Each" für Datein ?
lupo
Hallo Forum.
Ich möchte in einem Ordner die Namen der Datein durchsuchen und vergleichen. Ist der vergleich ungleich, so sollen die Datein gelöscht werden.
Den Vergleich führe ich über die LIKE - Funktion durch.
Damit alle Datein verglichen werden, wollte ich FOR EACH einsetzen.
Geht das eigentlich oder ist FOR EACH nur in der Tabelle einsetzbar.
Mein Makro läuft jedenfalls noch nicht hat jemand eine Idee bwz. kann mir bitte jemand auf die Sprünge helfen?
DANKE, schon einmal im Voraus.
lupo
Hier mein Makro:
Sub neu()
Dim file As Object
Dim backupDir
Dim backupFile
Dim backupType
Dim time2
Dim time3
Dim day
backupDir = Worksheets("einstellungen").Range("B2")    ' Pfad / Ordner der durchsucht werden  _
soll
backupFile = Worksheets("einstellungen").Range("B4")   ' Dateiname nach dem gesucht wird
backupType = Worksheets("einstellungen").Range("B5")   ' Dateityp txt, xls usw.
day = Worksheets("einstellungen").Range("B7")          ' Anzahl der Tage
time2 = Format(Now - day, "_DD_MM_YYYY")
time3 = Format(Now, "_DD_MM_YYYY")
file = (backupDir & "\*.*")
For Each file In backupDir
If file Like (backupDir & "\" & backupFile & time2 & "." & backupType) - (backupDir & "\" &  _
backupFile & time3 & "." & backupType) Then
Kill file
End If
Next
End Sub

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

Betreff
Benutzer
Anzeige
AW: "For Each" für Datein ?
19.10.2010 02:25:08
fcs
Hallo lupo,
die Suche nach Dateien kann man mit Dir durchführen.
Die Suchtreffer werden dann in einer Do-Loop-Schleife abgearbeitet.
Die Art deines Like-Vergleiches dürfte auch nicht funktionieren.
Besser das Datum aus dem Datei-Namen ermitteln und dann mit den Vorgabewerten vergleichen.
Ich würde es etwa wie folgt umsetzen.
Vorsicht beim Testen! Kill löscht ohne viele Spuren zu hinterlassen.
Gruß
Franz
Sub neu()
Dim sFile As String
Dim backupDir
Dim backupsFile
Dim backupType
Dim time1, sTime1 As String
Dim time2
Dim time3
Dim dDay
' Pfad / Ordner der durchsucht werden soll
backupDir = Worksheets("einstellungen").Range("B2")
' Dateiname nach dem gesucht wird
backupsFile = Worksheets("einstellungen").Range("B4")
' Dateityp txt, xls usw.
backupType = Worksheets("einstellungen").Range("B5")
' Anzahl der Tage
dDay = Worksheets("einstellungen").Range("B7")
'Datum der Tage des Vergleichszeitraums
time2 = Date - dDay
time3 = Date
'Dateien im Back-Up-Verzeichnis suchen
sFile = Dir(backupDir & "\*." & backupType)
Do Until sFile = ""
If sFile Like backupsFile & "_##_##_####." & backupType Then
'Datum im Dateinamen ermitteln
sTime1 = Mid(sFile, Len(backupsFile) + 2, 10)
sTime1 = Replace(sTime1, "_", ".")
time1 = CDate(sTime1)
'Datum mit Vergleichszeitraum vergleichen und Datei ggf. löschen
If time1 >= time2 And time1 

Anzeige
AW: "For Each" für Datein ?
19.10.2010 15:02:06
lupo
Hallo Ihr.
Danke für den Input.
Den Vorschlag von Franz habe ich umgesetzt.
Danke!
Allerdings haben ich noch die Zeile:
'' If time1 >= time2 And time1 < time3 Then '' ' Orginal
in
'' If time1 <= time2 And time1 < time3 Then ''
geändert.
Jetzt werden alle alten Datein gelöscht, die älter als zwei Tage sind und gestern und heute bleiben erhalten.
Super!
Mit dem Kill-Befehl habe ich auch schon überlegt, ob ich das so abändere dass die Datein in den Papierkorb verschoben werden. Nicht dass das ganze mal in falsche Hände gerät......
Bis zum nächsten Mal,
lupo
Anzeige
AW: "For Each" für Datein ?
19.10.2010 11:00:42
Rudi
Hallo,
ungetestet:
Sub neu()
Dim oFile As Object, oFolder As Object, oFS As Object
Dim BackUpDate As Date
Dim BackUpDir
Dim BackUpFile
Dim BackUpType
Dim time2
Dim iDays
With Worksheets("einstellungen")
BackUpDir = .Range("B2")    ' Pfad / Ordner der durchsucht werden soll
BackUpFile = .Range("B4")   ' Dateiname nach dem gesucht wird
BackUpType = .Range("B5")   ' Dateityp txt, xls usw.
iDays = .Range("B7")          ' Anzahl der Tage
End With
time2 = Date - iDays
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFS.GetFolder(BackUpDir)
For Each oFile In oFolder.Files
If oFile.Name Like BackUpFile & "_##_##_####." & BackUpType Then
BackUpDate = CDate(Replace(Mid(oFile.Name, Len(BackUpFile) + 1, 10), "_", "."))
Select Case BackUpDate
Case time2 To Date: Kill oFile
End Select
End If
Next oFile
End Sub

Vorsicht! Kill löscht ohne Papierkorb.
Gruß
Rudi
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige