Wie stelle ich das an? Kann mir einer bitte eine Hilfestellung geben?
Vielen Dank
Gruß
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
Um alte Logdateien in Excel mithilfe eines VBA-Makros zu löschen, befolge diese Schritte:
B1
ein (z.B. C:\Temp\
).A1
ein (z.B. 1
für Dateien, die älter als 1 Tag sind).ALT + F11
.Einfügen
> 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
ALT + F8
, wähle killen
und klicke auf Ausführen
.Fehlermeldung: "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung!"
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:
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:
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.
Wenn du die Logdateien in einem anderen Verzeichnis z.B. D:\Logs\
hast, gib einfach diesen Pfad in B1
ein:
B1
: D:\Logs\
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.
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
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen