Ordner in ZIP löschen: So geht's
Schritt-für-Schritt-Anleitung
Um einen Ordner in einer ZIP-Datei zu löschen, ohne die Datei zu entpacken, kannst Du den folgenden VBA-Code nutzen. Dieser umgeht die Bestätigungsdialoge, die normalerweise erscheinen:
Option Explicit
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
Private Declare PtrSafe Function SetTimer Lib "user32" ( _
ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, _
ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function SendDlgItemMessageA Lib "user32" ( _
ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, _
ByVal wMsg As Long, ByVal wParam As LongPtr, _
ByVal lParam As LongPtr) As LongPtr
Private Declare PtrSafe Function FindWindowA Lib "user32" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Dim hTimer As LongPtr
Sub ZipDelete()
Dim sPath As String
On Error GoTo Fehler
sPath = "D:\_Arbeit\BackUp001.zip\"
hTimer = SetTimer(0&, 0&, 50, AddressOf DlgClickProc)
With CreateObject("Shell.Application")
.Namespace(sPath & "MuyGrande").Self.InvokeVerb ("Delete")
.Namespace(sPath & "VeryBig").Self.InvokeVerb ("Delete")
.Namespace(sPath & "SehrGross").Self.InvokeVerb ("Delete")
End With
Fehler:
KillTimer 0&, hTimer
End Sub
Private Sub DlgClickProc()
' Klickt den Ja-Button an
Dim hDlg As LongPtr
hDlg = FindWindowA("#32770", "Ordner löschen")
If hDlg > 0 Then SendDlgItemMessageA hDlg, 6, &HF5, 0&, 0& ' 6=ja, 2=nein
End Sub
Führe diesen Code in einem VBA-Modul aus, um die gewünschten Ordner in der ZIP-Datei zu löschen.
Häufige Fehler und Lösungen
-
ZIP-Datei lässt sich nicht löschen: Stelle sicher, dass die ZIP-Datei nicht von einem anderen Programm verwendet wird. Schließe alle Programme, die auf die Datei zugreifen könnten.
-
cmd del ohne Nachfrage funktioniert nicht: Der Befehl rd
(remove directory) funktioniert in der Regel nicht für ZIP-Dateien. Verwende stattdessen den oben genannten VBA-Code.
-
ZIP-Ordner nach Extrahieren leer: Wenn Du den ZIP-Ordner entpackt hast und er leer erscheint, könnte es sein, dass Du nicht alle Dateien erfolgreich extrahiert hast. Überprüfe die Extraktionsoptionen.
Alternative Methoden
Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch Tools von Drittanbietern nutzen, die ZIP-Dateien bearbeiten. Programme wie 7-Zip oder WinRAR bieten oft die Möglichkeit, Dateien und Ordner in ZIP-Archiven zu löschen, ohne sie zu entpacken.
Praktische Beispiele
Angenommen, Du hast einen ZIP-Ordner mit dem Namen Daten.zip
, der die Ordner AlteDaten
und NeueDaten
enthält. Um AlteDaten
zu löschen, kannst Du den folgenden VBA-Code verwenden:
Sub DeleteOldDataFromZip()
Dim sPath As String
sPath = "D:\Pfad\Zu\Daten.zip\"
With CreateObject("Shell.Application")
.Namespace(sPath & "AlteDaten").Self.InvokeVerb ("Delete")
End With
End Sub
Tipps für Profis
- Nutze die
Application.DisplayAlerts = False
-Anweisung, um Excel-Bestätigungen zu unterdrücken, bevor Du mit Shell
arbeitest.
- Achte darauf, den Timer nach der Ausführung zu stoppen, um unerwünschte Prozesse zu vermeiden.
- Halte Deine VBA-Umgebung sauber, indem Du nicht mehr benötigte Module und Prozeduren regelmäßig entfernst.
FAQ: Häufige Fragen
1. Kann man ZIP-Dateien löschen, ohne sie zu entpacken?
Ja, das ist möglich, indem Du Tools wie den oben beschriebenen VBA-Code verwendest.
2. Wie kann ich einen ZIP-Ordner löschen, ohne Bestätigungen zu erhalten?
Verwende den Befehl Application.DisplayAlerts = False
in Verbindung mit dem InvokeVerb
-Befehl, um Bestätigungen zu unterdrücken.
3. Was tun, wenn die ZIP-Datei leer ist?
Überprüfe die Extraktionsoptionen oder stelle sicher, dass Du die Dateien korrekt extrahiert hast.
4. Gibt es eine Möglichkeit, ZIP-Dateien über die Kommandozeile zu löschen?
Ja, Du kannst cmd
verwenden, aber es wird empfohlen, die VBA-Methode zu nutzen, um Konflikte mit Dialogfenstern zu vermeiden.