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