Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1196to1200
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Unterordner löschen

Alle Unterordner löschen
Florian
Hallo Excelfreunde!
Diese Frage richtet sich wahrscheinlich an Hajo und Tino, geht im Grunde um ein Problem aus einem alten Post: ein Ordner hat beliebig viele (jetzt ca. 1200) Untermappen, welche wiederum 0-3 Untermappen haben. In jedem Ordner kann es dabei sein, dass Datein vorhanden sind, es kann aber auch sein, dass die Ordner komplett leer sind.
Die Frage nun: wie kann, möglichst einfach, ich alle Unterordner löschen, in denen weder Dateien oder andere Unterordner sind, die also keinen Informationsmehrwert haben?
Besten Dank für Eure Hilfe!
Gruss Florian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Alle Unterordner löschen
19.01.2011 10:33:08
Case
Hallo,
habe das jetzt nur an ein paar Odnern getestet. Also probiere es erst mal in einer Testumgebung. Falls Du keine Ordnerauswahl möchtest, sondern den Ordner fest vorgeben willst musst Du diese Zeile anpassen:
strTMP = fncFolder("C:\")
In z. B. sowas:
strTMP = "C:\Test\Ordner\" 'fncFolder("C:\")

Option Explicit
Private Declare Function GetCurrentDirectory Lib "kernel32" _
Alias "GetCurrentDirectoryA" _
(ByVal nBufferLength&, ByVal lpBuffer$) As Long
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName$) As Long
Dim strParentFolder As String
Dim objSubFolder As Object
Dim objTMPFolder As Object
Dim objFolder As Object
Dim objFSO As Object
Public Sub Emty_Folder_List()
Dim strDirOld As String
Dim strTMP As String
On Error GoTo Fin
strDirOld$ = String(255, 0)
Call GetCurrentDirectory(255, strDirOld$)
strDirOld$ = Left(strDirOld$, _
InStr(1, strDirOld$, vbNullChar) - 1)
Set objFSO = CreateObject("Scripting.FileSystemObject")
strTMP = fncFolder("C:\")
If strTMP  "" Then getSubFolders strTMP
Fin:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
Call SetCurrentDirectory(strDirOld$)
Set objSubFolder = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
Private Function getSubFolders(strTMPPath)
Set objFolder = objFSO.GetFolder(strTMPPath)
Set objSubFolder = objFolder.SubFolders
For Each objTMPFolder In objSubFolder
If objTMPFolder.Files.Count = 0 And _
objTMPFolder.SubFolders.Count = 0 Then
strParentFolder = objTMPFolder.ParentFolder.Path
objFSO.DeleteFolder objTMPFolder, True
getSubFolders strParentFolder
Else
getSubFolders objTMPFolder.Path
End If
Next
End Function
Private Function fncFolder(strPath As String) As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = strPath
.Title = "Folder"
.ButtonName = "Select..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strPath = .SelectedItems(1)
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
Else
strPath = ""
End If
End With
fncFolder = strPath
End Function
Servus
Case

Anzeige
Spitze Danke! (oT)
19.01.2011 15:03:23
Florian
..

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige