excel中使用VBA提取指定文件夹中指定扩展名的所有文件名的技巧
在不使用VBA,列出指定文件夹的所有文件名的方法中,我们使用Excel中隐藏的FILES函数定义名称,并将之应用到Excel公式中提取指定文件夹中所有文件名。今天更进一步:按扩展名筛选,只提取我们想要的那一类文件(比如只提取 .xlsx 或 .jpg)。配合自定义函数(UDF),像使用内置函数一样简单!
可以使用VBA创建一个自定义函数(UDF),轻松获取指定文件夹指定扩展名的所有文件的名称。
代码来了
'================================================
' 函数名称:GetFileNamesbyExt
' 功能描述:获取指定文件夹中特定扩展名的所有文件名
' 参 数:FolderPath - 文件夹路径
' FileExt - 文件扩展名(如".xlsx")
' 返 回 值:包含文件名的数组
'================================================
Function GetFileNamesbyExt(ByVal FolderPath As String, FileExt As String) As Variant
Dim Result As Variant
Dim i As Integer
Dim MyFile As Object
Dim MyFSO As Object
Dim MyFolder As Object
Dim MyFiles As Object
Set MyFSO = CreateObject("Scripting.FileSystemObject")
Set MyFolder = MyFSO.GetFolder(FolderPath)
Set MyFiles = MyFolder.Files
ReDim Result(1 To MyFiles.Count)
i = 1
For Each MyFile In MyFiles
If InStr(1, MyFile.Name, FileExt) <> 0 Then
Result(i) = MyFile.Name
i = i + 1
End If
Next MyFile
ReDim Preserve Result(1 To i - 1)
GetFileNamesbyExt = ResultEnd Function上述代码将创建了一个名为GetFileNamesbyExt的函数,该函数可像Excel内置函数一样在工作表中使用。
如何使用这个函数?
- 插入模块打开VBE编辑器(
Alt + F11),插入一个标准模块,粘贴上述代码。 - 使用公式提取
在工作表任意单元格中输入希望列出文件名的文件夹地址,示例中为单元格A1;在工作表任意单元格中输入指定的扩展名,示例中为单元格B1。然后,在想要列出文件名单元格中(示例为单元格A3),输入公式:
=IFERROR(INDEX(GetFileNamesbyExt($A$1,$B$1),ROW()-2),"")
向下拖动公式复制到下方单元格直至列出所有文件名,如下图1所示。

注意,在上面的公式中,使用了ROW()-2,因为公式单元格是从第三行开始的,这确保了当在下面的单元格中复制公式时,它将递增1。如果在某列的第一行输入公式,则可以简单地使用row()。
特别提示
- 如果省略第二个参数(扩展名),函数将返回文件夹中 所有文件名;
- 扩展名区分大小写?不用怕,
InStr默认不区分,放心用; - 路径最后不要忘了加反斜杠?不用加,
GetFolder自动识别。
写在最后
这个小工具非常适合:
- 整理照片时提取所有
.jpg文件; - 汇总报表时提取所有
.xlsx文件; - 清理电脑时列出所有
.tmp临时文件。
相关文章

不使用VBA! excel表格提取指定文件夹的所有文件名的技巧
Excel提供了一个名为FILES的宏表函数,可以直接在Excel中批量提取指定文件夹下的文件名,这种方法适合有一定Excel基础的用户,操作相对简单2026-02-26
轻松掌握基础功能! 给excel初学者的16个VBA基本代码
欢迎来到VBA的世界!这里有一些简单的代码示例,帮助你快速理解VBA的基础概念,通过这些代码,你可以逐步掌握VBA的精髓,为更复杂的任务打下基础2026-01-13
Excel表格中怎么插入和运行VBA代码? Excel宏代码运行攻略
在Excel中创建并运行VBA宏可以极大地提高工作效率,自动化重复性任务,其实在Excel中运行宏代码其实非常简单,只需几个步骤即可完成2025-05-06
excel图表秘籍! Excel VBA操作切片器切换显示不同图表的技巧
切片器是显示汇总数据最有吸引力的方式之一,Excel 2010中引入的切片器是一种将数据列表显示为页面上按钮的方法,下面我们就来看看如何利用切片器实现Excel图表类型的动态2024-12-15
excel动态查询表如何做? 利用VBA实现工作表数据的动态查询的教程
excel如何在多个工作表中查找某个给定值,当然要求这个给定的值在一个工作表中要是单一的值,如果是多个值我们可以稍微改一下代码即可,我们不再做详细讲解2024-11-25
excel表格怎么用vba批量建立文件夹? Excel建文件夹实例
excel中需要创建文件夹来管理文件,通常都是一个一个创建,我们可以通过Excel的VBA(Visual Basic for Applications)编写一个简单的脚本来自动化这个过程,详细请看下文介2024-06-11
excel表格怎么快速插入空行? VBA批量隔行加入空白行的技巧
excel表格怎么快速插入空行?excel表格中想要在表格中插入空行,我们可以使用vba实现,下面我们就来看看VBA批量隔行加入空白行的技巧2023-07-24
excel表格怎么利用VBA代码快速制作一份通讯录?excel表格中想要利用vba代码快速制作一份通讯录,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下2020-07-13
excel表格怎么利用VBA代码插入交叉矩形图?excel表格中想要绘制交叉的矩形图,该怎么绘制这个图形呢?我们可以使用vba代码来绘制,下面我们就来看看详细的教程,需要的朋友2020-04-28
excel怎么利用VBA代码插入同心圆?excel中想要画一个同心圆,该怎么绘制同心圆呢?下面我们就来看看excel总vba插入同心圆的教程,需要的朋友可以参考下2020-04-22







最新评论