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

Forumthread: alte Dateien löschen

alte Dateien löschen
07.02.2005 10:54:41
Alex
Hallo, ich habe mir ein kleines Programm zusammengebastelt, bei dem der Programmablauf in einer Logdatei (txt File) mitgeschrieben wird. Ich hätte jetzt gern in meiner Excel Tabelle ein Makro, welches mir alle Logdateien die älter als x Tage sind löscht. X steht dabei z.B. in Zelle A1. Der Pfad, wo sich die Logdateien befinden steht meinet wegen in B1. Die Dateien sollen unabhängig vom Dateinamen also *.txt gelöscht werden, also Bedingung ist eben nur das Alter.
Wie stelle ich das an? Kann mir einer bitte eine Hilfestellung geben?
Vielen Dank
Gruß
Anzeige
AW: alte Dateien löschen
Alex
Kann mir denn niemand helfen? ;-( Geht das überhaupt mit VBA? Wenn nicht, muss ich eine andere Lösung finden.
Gruß
AW: alte Dateien löschen
UweD
Hallo
so gehts.

Sub killen()
Dim strPath$, strFile$, strExt$, Darf%, Alter As Date
strPath = ActiveSheet.Range("B1").Value
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strExt = "*.txt"       'Dateiextension ggf. anpassen
Darf = ActiveSheet.Range("A1").Value 'Alter in Tagen
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Alter = FileDateTime(strPath & strFile)
If Date - Alter > Darf Then
Kill strPath & strFile
End If
strFile = Dir() ' nächste Datei
Loop
End If
End Sub

Gruß aus Siegen
Anzeige
AW: alte Dateien löschen
Alex
Hallo UweD,
danke dir vielmals. Ich kann das Makro heute leider nicht mehr testen, da ich keine "alten" Logfiles mehr habe. Werd es morgen ausprobieren.
Noch eine Frage zu dem Code, durchsucht er auch die Unterordner? Wenn ich also in Zelle B1 zum Beispiel C:\Temp\ stehen hätte, würde er die alte Textdatei unter C:\Temp\xyz\ auch finden und löschen?
Vielen Dank nochmal.
Gruß aus Berlin zurück.
Anzeige
ohne Unterverzeichnisse_OT
UweD
ot
AW: alte Dateien löschen
Alex
Hallo nochmal, ich hab den Code eben doch mal mit einer anderen Datei getestet, und bekomme folgende Fehlermeldung beim kompelieren:
"Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung!"
dabei wird "Right" in dieser Zeile markiert:
If Right(strPath, 1) "\" Then strPath = strPath & "\"
Wo liegt der Fehler?
Gruß
Alex
Anzeige
AW: alte Dateien löschen
UweD
Hallo nochmal.
Kann keinen Fehler feststellen. Bitte noch mal genau die Schreibweise prüfen.
Gruß UweD
AW: alte Dateien löschen
Alex
Hallo UweD,
die Schreibweise muss genauso sein, wie du sie mir gegeben hast, da ich copy & paste gemacht habe. Habs auch nochmal geprüft, ist das gleiche.
Aber sag mal, ist diese Zeile eigentlich so wichtig? So weit ich das verstanden habe sagt sie doch nur aus, dass das Makro "\" setzen soll, falls dies am Ende des Pfades noch nicht steht. Oder? Also den Fall kann ich ausschließen, am Ende steht definitiv immer "\". Kann ich die Zeile einfach raus löschen? Oder muss ich es dann noch irgendwie anpassen?
Gruß
Alex
Anzeige
AW: alte Dateien löschen
Alex
Nachtrag: Ich habe die Zeile testweise gelöscht... Es kommt keine Fehlermeldung mehr, aber das Markro löscht auch nicht die alten Dateien. ;-( Woran liegt es?
Gruß
Alex
AW: alte Dateien löschen
Alex
noch offen
AW: alte Dateien löschen
UweD
Hallo
hast du das Makro in ein "Normales Modul" in eie Normale Datei gepackt oder in die Personl.xls?
Versuch mal den Start aus deiser Datei heraus.
Makro wurde zwischenzeitlich noch was ergänzt.
https://www.herber.de/bbs/user/17618.xls
ansonst versuch es mal mit Einzelschritt.
Vielleicht sind ja keine Dateien älter als x Tage da..
Gruß UweD
Anzeige
AW: alte Dateien löschen
Alex
Hallo,
das Makro liegt in einer normalen Excel Datei, im Modul 10.
Das Makro in der Datei die du mir geschickt hast funktioniert bei mir auch nicht. ;-( Es gibt keine Fehlermeldungen, aber die txt Dateien werden auch nicht gelöscht. Es sind genügend alte Dateien da, habe als "Testordner" C:\Temp\ angegeben und die Zeit auf 1 Tag gestellt. Funktioniert aber nicht. ;-(
Liegt das vielleicht an meiner alten Excel Version? (97)
Vielen vielen Dank für deine Bemühungen.
Gruß
Alex
Anzeige
AW: alte Dateien löschen
UweD
Schein dann an der Excelversion zu liegen.
sorry.
Gruß UweD
AW: alte Dateien löschen
Alex
Hallo,
das Makro liegt in einer normalen Excel Datei, im Modul 10.
In der Beispiel Datei hat es funktioniert, ich habe dann das Makro 1zu1 in meine Mappe kopiert, und da kam wieder in der erwähnten Zeile der gleiche Fehler. ;-( Da die Zeile für mich aber nicht wichtig ist, habe ich sie weider gelöscht. Jetzt funktioniert es einwandfrei.
Ist aber schon komisch, das es in der einen Datei einen Fehler gibt und in der anderen alles funktioniert. Naja M$...
Vielen vielen Dank für deine Bemühungen, hast mir sehr geholfen.
Gruß
Alex
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Alte Logdateien in Excel automatisch löschen


Schritt-für-Schritt-Anleitung

Um alte Logdateien in Excel mithilfe eines VBA-Makros zu löschen, befolge diese Schritte:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.
  2. Gib den Pfad, in dem sich die Logdateien befinden, in die Zelle B1 ein (z.B. C:\Temp\).
  3. Gib die Anzahl der Tage, nach denen Dateien gelöscht werden sollen, in die Zelle A1 ein (z.B. 1 für Dateien, die älter als 1 Tag sind).
  4. Öffne den VBA-Editor:
    • Drücke ALT + F11.
  5. Füge ein neues Modul hinzu:
    • Rechtsklick auf "VBAProject (DeinDateiname)" > Einfügen > Modul.
  6. Kopiere den folgenden Code in das Modul:
Sub killen()
    Dim strPath As String, strFile As String, strExt As String
    Dim Darf As Integer, Alter As Date
    strPath = ActiveSheet.Range("B1").Value
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    strExt = "*.txt" ' Dateiextension anpassen
    Darf = ActiveSheet.Range("A1").Value ' Alter in Tagen

    If strPath = "" Then Exit Sub

    strFile = Dir(strPath & strExt)
    Do While Len(strFile) > 0
        Alter = FileDateTime(strPath & strFile)
        If Date - Alter > Darf Then
            Kill strPath & strFile
        End If
        strFile = Dir() ' nächste Datei
    Loop
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus:
    • Drücke ALT + F8, wähle killen und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehlermeldung: "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung!"

    • Überprüfe die Zeile If Right(strPath, 1) <> "\" Then strPath = strPath & "\". Wenn der Pfad bereits mit einem \ endet, kannst du diese Zeile weglassen.
  • Das Makro löscht keine Dateien:

    • Stelle sicher, dass der Pfad in B1 korrekt ist und alte Dateien vorhanden sind. Überprüfe auch, ob das Makro in einer normalen Excel-Datei und nicht in Personal.xls ausgeführt wird.
  • Das Makro funktioniert nicht in älteren Excel-Versionen:

    • Einige Funktionen könnten in Versionen wie Excel 97 nicht unterstützt werden. Es empfiehlt sich, eine neuere Version zu verwenden.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch PowerShell oder Batch-Skripte nutzen, um alte Dateien zu löschen. Hier ist ein einfaches Beispiel für ein Batch-Skript:

@echo off
setlocal
set "folder=C:\Temp"
set "days=1"
forfiles /p "%folder%" /s /m *.txt /d -%days% /c "cmd /c del @path"
endlocal

Speichere dies als delete_old_logs.bat und führe es aus, um alle .txt-Dateien, die älter als 1 Tag sind, zu löschen.


Praktische Beispiele

Wenn du die Logdateien in einem anderen Verzeichnis z.B. D:\Logs\ hast, gib einfach diesen Pfad in B1 ein:

  • In B1: D:\Logs\
  • In A1: 7 (für Dateien, die älter als 7 Tage sind)

Das VBA-Makro wird dann alle .txt-Dateien in D:\Logs\ löschen, die älter als 7 Tage sind.


Tipps für Profis

  • Unterordner durchsuchen: Um auch Unterordner zu durchsuchen, müsstest du die Logik im VBA-Code erweitern. Es gibt keine eingebaute Funktion in VBA, die dies direkt unterstützt, aber du kannst eine rekursive Funktion erstellen.

  • Testen vor dem Löschen: Füge vor der Kill-Anweisung eine Debug.Print-Anweisung ein, um zu sehen, welche Dateien gelöscht werden. So kannst du sicherstellen, dass das Makro wie gewünscht funktioniert.

Debug.Print strPath & strFile ' Zum Testen der zu löschenden Dateien
Kill strPath & strFile

FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um andere Dateitypen zu löschen?
Ja, ändere einfach die Zeile strExt = "*.txt" in die gewünschte Dateiendung, z.B. strExt = "*.log".

2. Funktioniert das Makro in Excel Online?
Nein, VBA wird in Excel Online nicht unterstützt. Du musst die Desktop-Version verwenden.

3. Was passiert, wenn ich das Makro ausführe und keine alten Dateien vorhanden sind?
Das Makro führt keine Aktionen aus und gibt keine Fehlermeldung aus. Es wird einfach beendet, wenn keine Dateien gefunden werden.

4. Wie kann ich das Makro speichern, damit ich es später wiederverwenden kann?
Speichere die Excel-Datei als Makro-fähige Arbeitsmappe (.xlsm), damit das Makro erhalten bleibt.

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