拓展林HX 发表于 2023-10-12 17:25:16

【存档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]
查看完整版本: 【存档01】如何获取全部文件名称(含子文件夹)?