Liebe community,
ich habe ein kurzes Codesegment geschrieben um mir von einem Verzeichnis alle Unterordnernamen in ein Tabellenblatt schreiben zu lassen.
Mir ist keine andere sinnvolle Möglichkeit eingefallen, als die Funktion welche ausliest und ins Tabellenblatt schreibt, rekursiv aufzurufen.
Für knappe 1300 Elemente dauert das fast 5min was mich doch sehr wundert.
Das Ergbnis dient zum bereinigen von Verzeichnisstrukturen die damit in Excel schön betrachtet werden können.
Hat jemand eine Lösung wie ich das beschleunigen kann?
Beste Grüße
Sub MainList()
Worksheets(1).UsedRange.ClearContents
Application.ScreenUpdating = False
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, 1)
ActiveSheet.UsedRange.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal Spalte As Integer)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Oabject
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
For Each xSubFolder In xFolder.SubFolders
letztezeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Application.ActiveSheet.Cells(letztezeile, Spalte).Formula = xSubFolder.Name
ListFilesInFolder xSubFolder.Path, Spalte + 1
Next xSubFolder
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
|