Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Leere Ordner löschen

Leere Ordner löschen
02.09.2020 08:20:01
xtian
Guten morgen zusammen,
ich benötige bei einem Makro Hilfe. Auf meinem Rechner befinden sich sehr viele teilweise kleiner aber auch
größere Ordnerstrukturen. Folgendes soll das Makro können:
1. Der Explorer oder so soll geöffnet werden und ich kann eine vorhandene Ordnerstruktur auswählen.
2. Das Makro sucht in der ausgewählten Ordnerstruktur nach leeren Ordnern. Leer bedeutet, keine
Unterordner und auch keine anderen Dateien.
3. Werden keine leere Ordner gefunden, kommt eine MsgBox mit der Information: Keine leeren Ordner gefunden.
Werden leere Ordner gefunden, soll in einer MsgBox der Pfad angegeben werden wo sich der leere Ordner befindet.
Mit dem Button "löschen" soll der leere Ordner dann gelöscht werden. Mit dem Button "weiter" soll der Ordner
nicht gelöscht werden und das Makro soll weiter zum nächsten leeren Ordner springen.
Vorab Herzlichen Dank für Eure Unterstützung.
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Ordner löschen
02.09.2020 08:51:14
Oberschlumpf
Hi,
dann zeig uns doch mal dein Makro, bei dem du Hilfe benötigst.
Ciao
Thorsten
AW: Leere Ordner löschen
02.09.2020 09:15:37
xtian
Danke für die schnelle Antwort. Hier was ich bereits habe:
Sub loeschen()
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oSourceFolder = oFSO.GetFolder(pfad)
For Each subpfad In oSourceFolder.Subfolders
Debug.Print subpfad
loeschen subpfad
Next
strFile = "\*.txt"
strFound = Dir(pfad & strFile)
Do While strFound  ""
Kill pfad & "\" & strFound
strFound = Dir
Loop
If oSourceFolder.Files.Count = 0 And oSourceFolder.Subfolders.Count = 0 Then RmDir pfad
End Sub
Leider läuft das Makro nicht so wie es soll.
Anzeige
AW: Leere Ordner löschen
02.09.2020 09:26:51
Danielnnd
Hi
Was ist denn der Unterschied zwischen "soll" und "ist"?
Bzw, was macht das Makro und was soll es tun?
Noch ne Frage zum Verständnis:
Orndner A0 enthält die UnterOrner A1 un A2, aber keine weiteren Dateien.
A1 und A2 sind leer.
Soll jetzt A0 auch zum löschen angeboten werden?
Gruß Daniel
Anzeige
AW: Leere Ordner löschen
02.09.2020 09:43:48
xtian
Hallo,
es kommen leider nur Fehlermeldungen. Habe das wohl komplett zerstört.
Zum Start soll es die Möglichkeit geben, eine Ordnerstruktur auszuwählen. Das fehlt
hier noch komplett. Außerdem fehlt das Thema MsgBox noch komplett.
Zu deiner Frage: Es sollen nur Ordner zum löschen angeboten werden, die auch wirklich
leer sind. Beinhaltet ein Ordner einen Unterordner, soll dieser nicht zum löschen
angeboten werden.
Anzeige
AW: Leere Ordner löschen
02.09.2020 10:04:49
Oberschlumpf
Hi,
ok, dann spinn ich die Idee von Daniel doch mal weiter:
"Orndner A0 enthält die UnterOrner A1 un A2, aber keine weiteren Dateien.
A1 und A2 sind leer."

Ok, Unterordner A1 + A2 sind leer und können ja gelöscht werden, weil sie keine Dateien enthalten.
Und JETZT kann AUCH A0 gelöscht werden, oder?
nohc ne Frage:
"Zum Start soll es die Möglichkeit geben, eine Ordnerstruktur auszuwählen"
WAS genau meinst du damit?
Soll ein bestimmter Ordner ausgewählt werden?
Und soll nun NUR IN DIESEM Ordner alles geprüft/gelöscht werden?
Nur, wenn dieser eine gewählte Ordner Unterordner enthält ohne was drin, dann kann dieser leere Unterordner gelöscht werden?
Es soll also NUR EINE Ordner-Ebene geprüft werden, und zwar DIE EBENE, die du zuvor ausgewählt hast?
Ciao
Thorsten
Anzeige
AW: Leere Ordner löschen
02.09.2020 10:24:18
xtian
Hallo Thorsten,
vielen Dank für deine Hilfe. Das Problem hat sich erledigt.
Viele Grüße
AW: Leere Ordner löschen
02.09.2020 10:11:58
fcs
Hallo xtian,
hier mein Vorschlag für ein entsprechendes Makro.
Du kannst komplett mit dem SO arbeiten. Dir ist nicht erforderlich.
LG
Franz
'Ohne Verweis im VBA-Editor auf Microsoft Scripting Runtime
Sub prcLoeschen_leere_Ordner()
Dim varFolder
Dim FSO As Object, FSOFolder As Object, FSOSubFolder As Object
Dim intLeer%, intGeloescht%, intFolder%
Dim sMsgTitel As String
sMsgTitel = "L Ö S C H E N   L E E R E   O R D N E R"
Set FSO = VBA.CreateObject("Scripting.Filesystemobject")
Ordner_Auswahl:
intFolder = 0
intLeer = 0
intGeloescht = 0
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Löschen leere Ordner - übergeordneten Ordner auswählen"
If .Show = -1 Then
varFolder = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
Set FSOFolder = FSO.GetFolder(varFolder)
For Each FSOSubFolder In FSOFolder.SubFolders
intFolder = intFolder + 1
If FSOSubFolder.Files.Count = 0 And FSOSubFolder.SubFolders.Count = 0 Then
intLeer = intLeer + 1
If MsgBox("Folgenden UnterOrdner löschen?" & vbLf _
& FSOSubFolder.Name, _
vbOKCancel, sMsgTitel) = vbOK Then
FSOSubFolder.Delete
intGeloescht = intGeloescht + 1
End If
End If
Next
'Statistik anzeigen
If intLeer = 0 Then
If MsgBox("Durchsuchter Ordner " & vbLf _
& FSOFolder.Path & vbLf & vbLf _
& "Anzahl Unterordner: " & intFolder & vbLf _
& "Keine leeren Ordner gefunden", _
vbRetryCancel, sMsgTitel) = vbRetry Then GoTo Ordner_Auswahl
Else
If MsgBox("Durchsuchter Ordner " & vbLf _
& FSOFolder.Path & vbLf & vbLf _
& "Anzahl Unterordner: " & intFolder & vbLf _
& "Anzahl leere Unterordner: " & intLeer & vbLf _
& "Anzahl gelöschte Unterordner: " & intGeloescht, _
vbRetryCancel, sMsgTitel) = vbRetry Then GoTo Ordner_Auswahl
End If
Beenden:
Set FSO = Nothing: Set FSOFolder = Nothing: Set FSOSubFolder = Nothing
End Sub

Anzeige
AW: Leere Ordner löschen
02.09.2020 10:22:49
xtian
Hallo Franz,
ganz herzlichen Dank für deine Hilfe. Das Makro arbeitet Perfekt.
Viele Grüße
;
Anzeige
Anzeige

Infobox / Tutorial

Leere Ordner effizient löschen


Schritt-für-Schritt-Anleitung

Um leere Ordner auf Deinem Windows 10 oder Windows 11 System zu löschen, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Menü Einfügen und dann Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub prcLoeschen_leere_Ordner()
    Dim varFolder
    Dim FSO As Object, FSOFolder As Object, FSOSubFolder As Object
    Dim intLeer%, intGeloescht%, intFolder%
    Dim sMsgTitel As String
    sMsgTitel = "L Ö S C H E N   L E E R E   O R D N E R"
    Set FSO = VBA.CreateObject("Scripting.Filesystemobject")
Ordner_Auswahl:
    intFolder = 0
    intLeer = 0
    intGeloescht = 0
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Löschen leere Ordner - übergeordneten Ordner auswählen"
        If .Show = -1 Then
            varFolder = .SelectedItems(1)
        Else
            GoTo Beenden
        End If
    End With
    Set FSOFolder = FSO.GetFolder(varFolder)
    For Each FSOSubFolder In FSOFolder.SubFolders
        intFolder = intFolder + 1
        If FSOSubFolder.Files.Count = 0 And FSOSubFolder.SubFolders.Count = 0 Then
            intLeer = intLeer + 1
            If MsgBox("Folgenden UnterOrdner löschen?" & vbLf & FSOSubFolder.Name, vbOKCancel, sMsgTitel) = vbOK Then
                FSOSubFolder.Delete
                intGeloescht = intGeloescht + 1
            End If
        End If
    Next
    If intLeer = 0 Then
        If MsgBox("Durchsuchter Ordner " & vbLf & FSOFolder.Path & vbLf & "Keine leeren Ordner gefunden", vbRetryCancel, sMsgTitel) = vbRetry Then GoTo Ordner_Auswahl
    Else
        If MsgBox("Durchsuchter Ordner " & vbLf & FSOFolder.Path & vbLf & "Anzahl leere Unterordner: " & intLeer & vbLf & "Anzahl gelöschte Unterordner: " & intGeloescht, vbRetryCancel, sMsgTitel) = vbRetry Then GoTo Ordner_Auswahl
    End If
Beenden:
    Set FSO = Nothing: Set FSOFolder = Nothing: Set FSOSubFolder = Nothing
End Sub
  1. Führe das Makro aus und wähle den übergeordneten Ordner aus, in dem Du leere Ordner finden und löschen möchtest.
  2. Das Makro wird alle Unterordner durchsuchen und leere Ordner zur Löschung anbieten.

Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen des Makros: Stelle sicher, dass Du die Microsoft Scripting Runtime im VBA-Editor aktiviert hast.
  • Leerer Ordner lässt sich nicht löschen: Überprüfe, ob der Ordner tatsächlich leer ist oder ob er versteckte Dateien enthält.
  • Ordner wird nicht gefunden: Stelle sicher, dass der Pfad korrekt eingegeben wurde und dass Du die erforderlichen Berechtigungen hast.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch Tools von Drittanbietern nutzen, um leere Verzeichnisse zu finden und zu löschen. Programme wie "CCleaner" oder "Wise Disk Cleaner" bieten diese Funktionalität.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele für den Code:

  • Leere Ordner in einem Backup-Ordner löschen: Wenn Du regelmäßig Backups machst, kannst Du das Makro nutzen, um unerwünschte leere Ordner zu entfernen.
  • Ordnerstruktur in Outlook aufräumen: Das gleiche Konzept kann auf Outlook angewendet werden, um leere Ordner in Deiner Ordnerstruktur zu finden und zu löschen.

Tipps für Profis

  • Backup erstellen: Erstelle vor dem Löschen ein Backup der Ordnerstruktur, um versehentliches Löschen wichtiger Daten zu vermeiden.
  • Batch-Prozesse: Du kannst das Makro erweitern, um auch leere Dateien zu löschen, indem Du zusätzlich die Kill-Funktion verwendest.
  • Automatisierung: Plane das Makro mit Windows Task Scheduler, um es regelmäßig auszuführen und die Festplatte automatisch von leeren Verzeichnissen zu befreien.

FAQ: Häufige Fragen

1. Wie finde ich leere Ordner auf Windows 10?
Du kannst das oben beschriebene Makro verwenden, um leere Ordner zu finden und zu löschen.

2. Funktioniert das Makro auch auf Windows 11?
Ja, das VBA-Makro funktioniert sowohl auf Windows 10 als auch auf Windows 11.

3. Was ist, wenn ich versehentlich einen leeren Ordner gelöscht habe?
Überprüfe, ob Du regelmäßig Backups machst. Nur so kannst Du versehentlich gelöschte Ordner wiederherstellen.

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