Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
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 per VBA löschen

Dateien per VBA löschen
18.05.2022 09:12:02
Chris
Hallo zusammen,
ich möchte per VBA in einem bestimmten ordner alle dateien löschen, die älter als 3 Wochen sind. Ich nutze das unten stehende Makro und erhalte die Fehlermeldung "Benutzerdefinierten Typ nicht definiert".
Wo liegt der Fehler? VG Chris

Dim strPath As String, varDatum As Date
Dim oFSO As New FileSystemObject
Dim oFile As file
Dim oFolder As Folder
strPath = ThisWorkbook.Sheets("Tests").Range("A5").Value
varDatum = Format(Date - 21, "DD.MM.YYYY")
Set oFolder = oFSO.GetFolder(strPath)
For Each oFile In oFolder.Files
If oFile.DateCreated 

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien per VBA löschen
18.05.2022 09:15:43
Tobias
Hallo Chris,
du musst den Verweis auf die "Microsoft Scripting Runtime" setzen um das FileSystemObject zu verwenden.
Schöne Grüße
Tobias
AW: Dateien per VBA löschen
18.05.2022 09:16:38
Rudi
Hallo,

Dim strPath As String, varDatum As Date
Dim oFSO As Object
Dim oFile As Object
Dim oFolder As Object
Set oFSO = CreateObject("scripting.filesystemobject")
strPath = ThisWorkbook.Sheets("Tests").Range("A5").Value
varDatum = Format(Date - 21, "DD.MM.YYYY")
Set oFolder = oFSO.GetFolder(strPath)
For Each oFile In oFolder.Files
If oFile.DateCreated 
Gruß
Rudi
AW: Dateien per VBA löschen
18.05.2022 09:32:14
Chris
Hallo zusammen,
vielen Dank. Die Fehlermeldung erscheint nicht mehr.
Allerdings tut sich auch nix beim Löschen:

Dim strPath As String, varDatum As Date
Dim oFSO As Object
Dim oFile As Object
Dim oFolder As Object
Set oFSO = CreateObject("scripting.filesystemobject")
strPath = ThisWorkbook.Sheets("Tests").Range("A5").Value
varDatum = Date
Set oFolder = oFSO.GetFolder(strPath)
For Each oFile In oFolder.Files
If oFile.DateLastModified = varDatum Then oFSO.DeleteFile oFile, True
Next
Es betreffenden Ordner sind ausschließlich XLSX Dateien, die als letztes Änderungsdatum den heute Tag - 18.05.2022 - aufweisen. Diese werden jedoch nicht gelöscht. Weiß jmd. weshalb?
Gruß
Chris
Anzeige
Weiß jmd. weshalb? Ja.
18.05.2022 09:51:44
Rudi
weil die Bedingunung nicht erfüllt ist.
varDatum ist ein String.
DateLastModified ein Datum + Zeit.
Das passt nie!!!
Gruß
Rudi
AW: Weiß jmd. weshalb? Ja.
18.05.2022 10:42:29
Chris
Hi,
danke für den Hinweis mit der Zeit. Das passt natürlich nie... Gruß Chris
AW: Dateien per VBA löschen
18.05.2022 10:05:59
Daniel
Hi
Hier eine alternative Methode:

Pfad = ThisWorkbook.Sheets("Tests").Range("A5").Value
Datei = Dir(Pfad & "*.*")
Do until Datei = ""
If Now - FileDateTime(Pfad & Datei) > 21 then Kill Pfad & Datei
Datei = Dir()
Loop
Die Pfadbezeichnung muss mit einem Backslash enden.
Gruß Daniel
AW: Dateien per VBA löschen
18.05.2022 10:43:58
Chris
Hi Daniel,
danke für das Makro. Läuft gut.
Ein Ergänzung: Soll alles so gelöscht werden wie gesagt, AUßer die Datei "Kunden.xlsx", die soll in jedem Fall unangetastet bleiben.
Wie ergänzt man dies?
VG
Chris
Anzeige
AW: Dateien per VBA löschen
18.05.2022 10:49:21
Rudi

 Pfad = ThisWorkbook.Sheets("Tests").Range("A5").Value
Datei = Dir(Pfad & "*.*")
Do until Datei = ""
If Datei  "Kunden.xlsx" Then
If Now - FileDateTime(Pfad & Datei) > 21 then Kill Pfad & Datei
End if
Datei = Dir()
Loop
Gruß
Rudi
AW: Dateien per VBA löschen
18.05.2022 10:53:41
UweD
Hallo
ungetestet...

Pfad = ThisWorkbook.Sheets("Tests").Range("A5").Value
Datei = Dir(Pfad & "*.*")
Do until Datei = ""
If Datei  "Kunden.xlsx" then
If Now - FileDateTime(Pfad & Datei) > 21 then Kill Pfad & Datei
End If
Datei = Dir()
Loop
LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige