获取指定文件夹下的文件名

获取指定文件夹下的文件名是一个非常常见的需求,本期的这个函数-getFileList,也是小编自己日常二次开发的经常使用的个人自定义函数,今天就分享给大家。

具体用途我们通过几个案例来看一下
以下公式中的全部路径:D:\自媒体\文章\2020年6月28日 旋风图
自己使用需要替换成自己的路径
文件夹下的全部文件:

案例1 默认获取excel类型的文件

getFileList只用了第一个参数,那就是路径,结果是一个一维数组,所以可以使用INDEX函数依次获取,IFERROR容错。
公式:=IFERROR(INDEX(getFileList("D:\自媒体\文章\2020年6月28日 旋风图"),ROW(A1)),"")

案例2 获取全部文件(不管类型)

第二参数使用*,表示任意后缀名都匹配
公式:=IFERROR(INDEX(getFileList("D:\自媒体\文章\2020年6月28日 旋风图","*"),ROW(A1)),"")

案例3 排除指定类型(剩下全部)

第四参数为TRUE,表示排除,注意第三参数不写,写了一个逗号
这里是排除后缀名是xlsx的全部文件
公式:=IFERROR(INDEX(getFileList("D:\自媒体\文章\2020年6月28日 旋风图","xlsx",,TRUE),ROW(A1)),"")

案例4 模糊指定后缀名

后缀名包含g的全部取出
公式:=IFERROR(INDEX(getFileList("D:\自媒体\文章\2020年6月28日 旋风图","*g*"),ROW(A1)),"")

案例5 只获取文件名(去掉文件夹路径)

只获取文件名,不获取路径
第三参数FALSE即可
公式:=IFERROR(INDEX(getFileList("D:\自媒体\文章\2020年6月28日 旋风图","*g*",FALSE),ROW(A1)),"")
以上五个案例,大概就是这个自定义函数的功能了,有兴趣的同学,可以在次基础上继续拓展,比如支持多后缀名,文件名支持模糊匹配等。
源码截图:
源码(看不清的左右滑动):
'作者:小易'日期:2019-11-28'功能:根据地址获取文件名'参数: Rem 1、sFdPath(必填): 文件夹路径 Rem 2、sFileExtension(可选):后缀名,支持?和*通配符,默认xls?-Excel Rem 3、bPath (可选)-是否包括路径,默认包括 Rem 4、bReverse (可选)-默认按第三参数统计,如果未True,则是排除'-----------------------------------------------------------------------Function getFileList(ByVal sFdPath As String, _ Optional sFileExtension As String = "xls*", _ Optional bPath As Boolean = True, _ Optional bReverse As Boolean = False) Dim objfso As Object, arr(), item, sTempFile As String Dim iFileCount As Integer, k As Long k = -1 Set objfso = CreateObject("Scripting.filesystemobject") iFileCount = objfso.getfolder(sFdPath).files.Count If iFileCount = 0 Then ReDim arr(0) arr(0) = "" Else For Each item In objfso.getfolder(sFdPath).files sTempFile = IIf(bPath, item.Path, item.Name) If (UCase(sTempFile) Like "*." & UCase(sFileExtension)) _ = Not bReverse Then k = k + 1 ReDim Preserve arr(k) arr(k) = sTempFile End If Next End If getFileList = arrEnd Function
如何使用:Excel中如何使用VBA(宏)
(0)

相关推荐