Function getfilelist(path As String) As Variant
'返回文件夾的所有文件,輸出位getfilelist數組
Dim ifolder As Folder
Dim ifile As file
Dim filelist As New ArrayList
Set root = os.GetFolder(path)
For Each ifile In root.Files
filelist.Add ifile.Name
Next
For Each ifolder In root.SubFolders
For Each ifile In ifolder.Files
filelist.Add ifile.Name
Next
Next
getfilelist = filelist.ToArray
End Function
其他Sub程序可以直接調用此函數;例如
Sub fds()
Dim c As Variant
c = getfilelist("C:\Users\xyz\software")
Debug.Print "文件夾下共有" & UBound(c) & "個文件"
Debug.Print "第一個文件名是:" & c(0)

本方法使用到Arraylist。
=======================================================
其實,不要說VBA沒有好的列表,數組方法。VBA本身直接對接Excel表格,可以把數據直接寫到excel單元格,這就是非常強大的“數組或者列表”,而且很直觀,可以把“數組,列表”顯現出來。真正做到可視化編程。這是其他編程語言做不到的。
Sub dfasdf()
Dim root As Folder
Dim wjj As Folder 'wjj文件夾
Dim wj As file 'wj文件
ActiveSheet.UsedRange.Clear
i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set root = fso.GetFolder("C:\Users\uuxyz\software")
For Each wj In root.Files
Range("A" & i) = wj.Name
i = i + 1
Next
For Each wjj In root.SubFolders
For Each wj In wjj.Files
Range("A" & i) = wj.Name
i = i + 1
Next
Next
End Sub
