Sub Get_Folder_Structure()
Dim search_Folder As String
Documents.Add
searchFolder = Select_Folder_From_Prompt()
Selection.TypeText (searchFolder)
Selection.TypeParagraph
If search_Folder <> "EMPTY" Then
Call List_subfolder_structure(search_Folder, 1)
End If
End Sub
Function Select_Folder_From_Prompt() _
As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Select a folder"
.AllowMultiSelect = bMultiSelect
.InitialFileName = CONST_MODEL_DIRECTORY
.Filters.Clear
If .Show = -1 Then
Select_Folder_From_Prompt = .SelectedItems(1) & "\"
Else
Select_Folder_From_Prompt = "EMPTY"
End If
End With
End Function
Function List_subfolder_structure(FolderPath As String, number_of_levels As Integer)
Dim number_of_files As Integer
Dim file_count As Integer
Dim file_name As String
Dim level_count As Integer
Dim file_Path As String
number_of_files = 0
level_count = 0
file_name = Dir(FolderPath & "*.*", vbDirectory)
Dim fileType As String
Do While ((file_name) <> "")
If ((file_name <> ".") And (file_name <> "..")) Then
level_count = 0
Do While (number_of_levels > level_count)
Selection.TypeText text:=vbTab
level_count = level_count + 1
Loop
Selection.TypeText (file_name)
Selection.TypeParagraph
fileType = getFileType(FolderPath & file_name)
If (fileType = "Folder") Then
number_of_levels = number_of_levels + 1
file_Path = FolderPath & file_name & "\"
Call List_subfolder_structure(file_Path, number_of_levels)
number_of_levels = number_of_levels - 1
End If
End If
number_of_files = number_of_files + 1
file_name = Dir(FolderPath & "*.*", vbDirectory)
Do While (file_count < number_of_files And file_name <> "")
file_name = Dir
file_count = file_count + 1
Loop
file_count = 0
Loop
End Function
Function getFileType(file As String) As String
fileAttribute = (GetAttr(file) And vbDirectory)
If fileAttribute = vbDirectory Then
getFileType = "Folder"
Else
getFileType = "File"
End If
End Function
|