Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien per VBA löschen

Forumthread: 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 
Anzeige

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
Anzeige
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
Anzeige
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
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
Anzeige
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
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige