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

ältere Dateien im ordner löschen

Forumthread: ältere Dateien im ordner löschen

ältere Dateien im ordner löschen
31.07.2014 20:24:28
Spenski

passend zum vorigem thread suche ich einen code der in einem ordner
M:\_PST\BACKUP
alle dateien löscht , die älter als 14 tage sind
.........
oder :
die älteste datei im ordner gelöscht wird.
ich habe gegoogled und auch einige codes gefunden , aber als anfänger verwirrte mich die menge an verschiedener codes sehr. benötige da was sicheres , da es fpr die arbeit ist
gruss
christian

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ältere Dateien im ordner löschen
01.08.2014 10:28:36
Hajo_Zi
Hallo Christian,
Option Explicit
' Dieser Source stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.
' Der VB Code ist aus dem Beitrag  _
http://www.activevb.de/tipps/vb6tipps/tipp0492.html
' Verweis: Microsoft Scripting Runtime
' Originalcode
'Dim i As Long
'With Application.FileSearch
'    .NewSearch
'    .LookIn = ActiveWorkbook.Path   'Suchverzeichnis
'    .SearchSubFolders = False       'True wäre mit Unterverzeichnissen
'    .Filename = "*.csv"             'Dateien die mit .csv änden
'    .Execute                        'suche ausführen
'    For i = 1 To .FoundFiles.Count
'        Application.StatusBar = "-->>   Einlesen der Datei:  " & i & " / " & .FoundFiles.Count  _
& "  <<--"
'        Call importieren_und_verschieben(.FoundFiles(i))
'    Next i
'End With
Sub Start()
SearchInFolder ThisWorkbook.Path
End Sub
Private Sub SearchInFolder(ByVal Folderspec As String)  ' auslesen aufrufen mit Ordnername
Dim StTyp As String                                 ' Dateityp
Dim FSO As New FileSystemObject
Dim SearchFolder As Folder
Dim FD As Folder, FI As File
Dim EachFil As Files, EachFold As Folders
Dim LoI As Long                                     ' Laufvariable zum schreiben der Ordner
StTyp = "xlsm"
Set SearchFolder = FSO.GetFolder(Folderspec)
Set EachFil = SearchFolder.Files            ' Dateien in der jeweiligen Root
'    MsgBox EachFil.Count                        ' Anzahl Dateien
'   Dateien auslesen
For Each FI In EachFil                      ' Schleife über alle Dateien
'       Dateityp feststellen
If UCase(Right(FI.Name, Len(FI.Name) - InStrRev(FI.Name, "."))) = UCase(StTyp) Then
If FileDateTime(FI) < Now - 14 Then
FI.Delete
End If
End If
Next FI
Set EachFil = Nothing
Set EachFold = Nothing
Set FSO = Nothing
End Sub

Anzeige
AW: ältere Dateien im ordner löschen
01.08.2014 16:35:07
Spenski
Danke

;
Anzeige

Infobox / Tutorial

Ältere Dateien im Ordner löschen mit VBA


Schritt-für-Schritt-Anleitung

Um alle Dateien in einem bestimmten Ordner zu löschen, die älter als 14 Tage sind, kannst Du den folgenden VBA-Code verwenden. Dieser Code ist speziell für Excel gedacht und funktioniert mit der Version Excel 2007 und höher.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.
  3. Kopiere den nachfolgenden Code in das Modul:
Option Explicit
Sub LoescheAeltereDateien()
    Dim FSO As Object
    Dim SuchOrdner As String
    Dim Datei As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' Pfad zum Ordner, in dem die Dateien gelöscht werden sollen
    SuchOrdner = "M:\_PST\BACKUP"

    For Each Datei In FSO.GetFolder(SuchOrdner).Files
        If Datei.DateCreated < Now - 14 Then
            Datei.Delete
        End If
    Next Datei

    Set FSO = Nothing
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, indem Du auf Entwicklertools > Makros klickst und das Makro LoescheAeltereDateien auswählst.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 76: Der Pfad nicht gefunden."

    • Lösung: Überprüfe den Pfad M:\_PST\BACKUP und stelle sicher, dass er korrekt ist und dass Du die notwendigen Berechtigungen hast.
  • Fehler: "Objekt erforderlich."

    • Lösung: Stelle sicher, dass Du den Verweis auf die Microsoft Scripting Runtime aktiviert hast. Gehe zu Extras > Verweise und aktiviere den entsprechenden Eintrag.

Alternative Methoden

Eine alternative Methode, um ältere Dateien zu löschen, ist die Verwendung der Windows-Befehlszeile. Du kannst den Befehl forfiles verwenden:

forfiles /p "M:\_PST\BACKUP" /s /d -14 /c "cmd /c del @file"

Dieser Befehl löscht alle Dateien, die älter als 14 Tage sind, direkt über die Eingabeaufforderung.


Praktische Beispiele

Angenommen, Du möchtest nur bestimmte Dateitypen löschen, wie z.B. .txt oder .csv:

If UCase(Right(Datei.Name, 4)) = ".CSV" And Datei.DateCreated < Now - 14 Then
    Datei.Delete
End If

Das Beispiel zeigt, wie Du die Dateitypüberprüfung in den vorhandenen Code integrieren kannst.


Tipps für Profis

  • Nutze Kommentare im Code, um wichtige Abschnitte zu erklären.
  • Teste den Code zunächst in einem Testordner, um unbeabsichtigtes Löschen wichtiger Dateien zu vermeiden.
  • Du kannst den Code erweitern, um eine Bestätigung vor dem Löschen anzuzeigen.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um Dateien älter als 30 Tage zu löschen? Ja, ändere einfach die Zahl 14 in Now - 30 im Code.

2. Was passiert, wenn ich das Makro ausführe? Das Makro löscht alle Dateien im angegebenen Ordner, die älter als die festgelegte Anzahl von Tagen sind. Stelle sicher, dass Du eine Sicherungskopie wichtiger Dateien hast.

3. Funktioniert dieser Code auch in Excel für Mac? Der Code ist für Windows konzipiert. Für Mac-Excel gibt es andere Ansätze, um Dateien zu verwalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige