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