要使用 Excel VBA 顺序读取指定文件夹中的文件名,可以按照以下步骤操作。下面的示例代码将列出指定文件夹中的所有文件名,并将它们输出到工作表的某一列中。
ALT + F11
键,打开 VBA 编辑器。插入
> 模块
。在新模块中粘贴以下代码:
Sub ListFilesInFolder()
Dim folderPath As String
Dim fileName As String
Dim ws As Worksheet
Dim i As Long
' 设置要读取的文件夹路径
folderPath = "C:\你的文件夹路径\" ' 请将此处替换为你的文件夹路径,并确保以反斜杠结尾
' 检查文件夹路径是否以反斜杠结尾
If Right(folderPath, 1) <> "\" Then
folderPath = folderPath & "\"
End If
' 设置要将文件名列出的工作表,例如活动工作表
Set ws = ThisWorkbook.ActiveSheet
' 清除之前的内容(可选)
ws.Cells.Clear
' 获取第一个文件名
fileName = Dir(folderPath & "*.*")
' 初始化行号
i = 1
' 循环读取所有文件
Do While fileName <> ""
' 将文件名写入工作表的A列
ws.Cells(i, 1).Value = fileName
' 获取下一个文件名
fileName = Dir
' 增加行号
i = i + 1
Loop
MsgBox "文件列表已成功导出到工作表!", vbInformation
End Sub
在代码中找到以下行:
folderPath = "C:\你的文件夹路径\" ' 请将此处替换为你的文件夹路径,并确保以反斜杠结尾
将 "C:\你的文件夹路径\"
替换为你实际想要读取的文件夹路径。例如:
folderPath = "C:\Users\YourName\Documents\MyFolder\"
注意:确保路径以反斜杠 \
结尾。
ALT + F8
键,打开宏对话框。ListFilesInFolder
宏,然后点击 运行
。运行宏后,指定文件夹中的所有文件名将会按顺序列出在当前活动工作表的 A 列中。如果需要将文件名列到其他列,可以修改代码中的 Cells(i, 1)
中的列号。例如,Cells(i, 2)
将文件名列到 B 列。
如果你希望递归读取子文件夹中的文件,可以使用以下增强版代码:
Sub ListFilesRecursive(folderPath As String, Optional ws As Worksheet)
Dim fso As Object
Dim folder As Object
Dim subFolder As Object
Dim file As Object
Dim i As Long
If ws Is Nothing Then Set ws = ThisWorkbook.ActiveSheet
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
i = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
For Each file In folder.Files
ws.Cells(i, 1).Value = file.Path
i = i + 1
Next file
For Each subFolder In folder.SubFolders
ListFilesRecursive subFolder.Path, ws
Next subFolder
End Sub
Sub RunListFilesRecursive()
Dim rootFolder As String
rootFolder = "C:\你的文件夹路径\" ' 替换为你的根文件夹路径
ListFilesRecursive rootFolder
MsgBox "所有文件和子文件夹中的文件已列出!", vbInformation
End Sub
使用方法:
RunListFilesRecursive
宏。这样,你就可以更全面地获取指定文件夹及其子文件夹中的所有文件名了。
领取专属 10元无门槛券
手把手带您无忧上云