ExcelVBA-Fso打开文件对话框取得文件夹中的一层目录列表
有时候我们在工作时需要取得文件夹下面的第一层文件夹的目录列表,我们可以dos命令做成bat文件,生成一个txt文件,
也可以用以下的方法:VBA直接取出,我只要一层就可以啦,今天练习一下用做一个自定义的函数,把取得的列表返回到一个数组中,有时有用,这里做个记录吧
这里有两个代码常常用到,(1)打开文件对话框(2)取得列表并返回到数组中
Sub t()
' Dim arr() As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择文件夹"
If .Show = -1 Then
pth = .SelectedItems(1)
arr = GetFolderList(pth)
Else
MsgBox "已取消操作!"
Exit Sub
End If
End With
[b1].Resize(UBound(arr) 1, 1) = Application.Transpose(arr)
End Sub
下面是一个自定义函数
Function GetFolderList(folderspec)
Dim fs, f, f1, fc, s
Dim temp_arr()
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.SubFolders
ReDim Preserve temp_arr(fc.Count)
m= 0
For Each f1 In fc
temp_arr(m) = f1.Path
' s = s & f1.Name
' s = s & vbCrLf
m = m 1
Next
' MsgBox s
GetFolderList = temp_arr
End Function
====这是我的电脑中的一个文件夹“电脑教程”的列表====
====运行代码,列表取出来了=====
====今天就学习到此吧====