马上注册,享用更多功能,让你轻松玩转DOSPY论坛-诺亚方舟号
您需要 登录 才可以下载或查看,没有账号?立即注册
x
QUOTE:
作者:E精精 (Excel办公实战)
原贴标题:如何获取全部文件名称(含子文件夹)?
原贴地址:httpsx://mp.weixin.qq.com/s/zlX4K9W5MpaLJTexqomBjQ
我们如何要做多文件处理,第一步就是需要获取到全部的文件,然后才能谈合并或者其他操作!
今天我们就是介绍如何获取全部文件名称!
为了大家方便调用,我们通过FSO对象来处理!
讲解01 | 了解FSO对象
FSO对象-用于对文件和文件夹管理,包括常见的增、删、查、改、移等操作!
这里我们推荐新手使用前期绑定,也就是我们下面的写法 NEW进行实例化!
这样会有智能提示,你写起来会轻松一些!
比如下面根据路径获取文件夹对象,输入 getfo就会调出来 GetFolder 方法
讲解02 | 获取指定路径下的全部文件夹(不含子级)
非常简单,说白了,就是FSO这个类封装好了一些常用方法,我们只要知道语法去调用,不需要知道内部如何去实现的!
下面的代码,列出了给定路径(basePath常量)
这句就是获取全部文件夹对象,他有很多属性或者方法
- oFso.GetFolder(basePath).SubFolders
复制代码
我们想要的只是每个文件夹对象的全路径,当然你也可以获取文件夹名称
如果你注意一下上图,你会发现他有一个Files属性,下面我们想要获取文件信息就要使用到!
讲解03 | 获取文件夹中的文件名称
files是文件夹对象的一个属性,通过他可以获得文件夹下的全部文件对象,就好像大家看到的一样,文件有很多属性,比如创建时间、修改时间、大小等
其实Name就是名称,Path就是路径+名称
有了上面的铺垫,我们结合递归就可以写一个列出全部文件名称的程序了!
讲解04 | 列出全部文件名称(含子级)
为了方便大家调用,我们成型的代码还是使用后期绑定,这样就不需要引用对应的dll文件库了!
封装好后一句代码即可调用获取文件名称,当然想获取路径+名称 的使用Path前面铺垫已讲,其他属性,大小什么的也可以获取!
示例源码:如何使用VBA代码?
- Const basePath As String = "D:\OFFICE模板\Excel"
- Dim n As Long '记录文件数目
- 'Excel办公实战
- '-----------------------------------------------
- Sub getFiles(spath As String)
- Dim oFso As Object, ofile As Object, fd As Object
- Dim baseFolder As Object
-
- '创建Fso对象-后期绑定
- Set oFso = CreateObject("Scripting.FileSystemObject")
-
- '获取文件夹对象
- Set baseFolder = oFso.GetFolder(spath)
-
- '遍历对应的文件夹中的全部文件夹
- For Each ofile In baseFolder.Files
- n = n + 1
- Cells(n, 1) = ofile.Name '文件名称写入A列
- Next
-
- '处理所有文件夹
- For Each fd In baseFolder.SubFolders
- '递归调用
- getFiles fd.Path
- Next
- End Sub
- '一句代码调用
- Sub 获取全部文件名称()
- getFiles basePath
- End Sub
复制代码
如果你是要供其他过程调用,建议把数据封装到一个全局数组中!这里就不再展开了!递归什么?大概就是“从前有座山,山里……”,你们都熟悉吧!
递归的方法非常简洁,也是开发的必备技能之一~
另附py脚本示例:
- import os
- def traverse_dir(path):
- for root, dirs, files in os.walk(path):
- print("当前目录:", root)
- print("子目录列表:", dirs)
- print("文件列表:", files)
- dir_path = "你的目录"
- print('待遍历的目录为:', dir_path)
- print('遍历结果为:')
- traverse_dir(dir_path)
复制代码
|