ExcelVBA文件操作-获得文件夹中的所有子文件夹
ExcelVBA文件操作-获得文件夹中的所有子文件夹
上一期,学习了
今天我们来学习如果取得文件夹中的子文件夹路径
如图
在我们可以先用上一节选择取得【test目录】
再读取【1目录、2目录、3目录】再读取……
上一期的程序
Sub FileDialog_sample1()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path
.Title = "选择文件夹"
If .Show = True Then
Range("B1") = .SelectedItems(1) & "\"
Else
MsgBox "你选择了“取消”"
End If
End With
End Sub
我们可以把它写成一个函数
'打开对话框,选择,取得文件夹路径,返回string
Function SelectGetFolder()
'选择单一文件
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。
' MsgBox "您选择的文件夹是:" & .SelectedItems(1)
SelectGetFolder = .SelectedItems(1)
Else
SelectGetFolder = "没有选择"
End If
End With
End Function
用法是:Path= SelectGetFolder() 可以啦
【知识点】
FileSystemObject 对象 是这样创建的 Set fs = CreateObject("Scripting.FileSystemObject") 返回一个对象 对象中有一个方法:GetFolder方法 可返回fs对象中的子对象:Folder 对象。 Folder对象中有一个属性是: SubFolders 可返回文件夹中的子文件夹 例如: Sub ShowFolderList(folderspec) Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(folderspec) Set fc = f.SubFolders For Each f1 in fc s = s & f1.name s = s & vbCrLf Next MsgBox s End Sub |
---|
因此我们可以利用以上的知识点进行设计一个方法用于以上的要求的方法或者函数 |
函数如下
Function GetAllPath(sPath As String)
Dim aRes, sarr, sDic, sFso, F, Mat
Dim FileName$, n&, k&
On Error Resume Next
Set sDic = CreateObject("Scripting.Dictionary")
Set sFso = CreateObject("Scripting.FileSystemObject")
sDic(sPath) = ""
Do
sarr = sDic.keys
For Each F In sFso.GetFolder(sarr(n)).SubFolders
sDic(F.Path) = ""
Next
n = n + 1
Loop Until sDic.Count = n
GetAllPath = sDic.keys
End Function
【主程序如下】
Sub yhd_ExcelVBA获得文件夹中的所有子文件夹()
Dim myPath As String
Dim arr
myPath = SelectGetFolder()
arr = GetAllPath(myPath)
t = UBound(arr)
' MsgBox t
Range("a1").Resize(t, 1) = Application.Transpose(arr)
End Sub
【效果】
===今天学习到此===
更多的文章,请到我的公众号
相关文章
- 使用Nginx反向代理minio,提供文件公共访问
- 湖仓一体电商项目(二十四):合并Iceberg小文件
- ansible 对文件内容的操作
- 引入JS文件和JQuery
- 【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
- PHP readdir()和scandir():读取目录下的文件及文件夹
- 解压Linux ISO文件:从入门到精通(linuxiso文件解压)
- Maven pom.xml文件详解编程语言
- Python3 解析excel文件详解编程语言
- python3的一些文件操作的脚手架详解编程语言
- Linux文件管理技巧:覆盖目录操作完全指南(linux覆盖目录)
- MySQL 文件细节分析(mysql文件详解)
- 如何优雅地退出Linux文件编辑操作?(linux退出文件)
- Linux挂载Samba:极大拓展文件存储空间(linux挂载samba)
- MySQL中的file类型存储文件路径的最佳选择(mysql中file类型)
- 数据库导入MySQL数据库Bak文件与MySQL的操作(bak怎么导入mysql)
- MySQL实现可靠的图片和文件上传操作(mysql上传图片和文件)
- 基础:在 Linux 终端中移动文件
- 用C#把文件转换为XML的代码