【存档01】如何获取全部文件名称(含子文件夹)?
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)
页:
[1]