
在日常工作中,当我们需要从多个文件中获取照片名称,并把它放到EXCEL表格里,该怎么做呢?
我们可以通过VBA代码来获取照片名称,跟着小兔一起来看看是如何做的吧。
01 启动VBA 编辑器
打开 Excel 并进入 VBA 编辑器,打开Excel文件后,按下快捷键Alt + F11,即可快速打开VBA编辑器。
02 插入新模块
在VBA编辑器中,右键点击任意一个对象(比如 `Sheet1`),选择 【插入】—【模块】。
03 在新建的模块中粘贴以下 VBA 代码:
下面的代码会遍历指定文件夹及其所有子文件夹中的图片文件,并将它们的文件名逐行列出在当前活动工作表的第一列中。
Sub CollectImageFileNames()
Dim folderPath As String
Dim fileSystem As Object
Dim rowIndex As Long ' 使用 Long 类型可以避免在处理大量文件时溢出的问题
' 设置要扫描的根文件夹路径
folderPath = "E:\桌面\图片\" ' 替换为你的根文件夹路径
' 创建文件系统对象
Set fileSystem = CreateObject("Scripting.FileSystemObject")
' 初始化行索引
rowIndex = 1
' 递归遍历文件夹及其子文件夹
TraverseFolders fileSystem.GetFolder(folderPath), ActiveSheet, rowIndex
' 释放对象
Set fileSystem = Nothing
' 提示完成
MsgBox "图片文件名已获取并保存到工作表中。"
End Sub
Sub TraverseFolders(folder As Object, ws As Worksheet, ByRef rowIndex As Long)
Dim fileSystem As Object
Dim file As Object
Dim subFolder As Object
Set fileSystem = CreateObject("Scripting.FileSystemObject")
' 遍历当前文件夹中的所有文件
For Each file In folder.Files
' 如果文件是图片文件(比如 .jpg)
If LCase(Right(file.Name, 4)) = ".jpg" Or LCase(Right(file.Name, 5)) = ".jpeg" Or LCase(Right(file.Name, 4)) = ".png" Then ' 可以根据需要修改文件类型
' 在当前工作表的第 rowIndex 行第一列写入文件名
ws.Cells(rowIndex, 1).Value = file.Name
rowIndex = rowIndex + 1
End If
Next file
' 递归遍历子文件夹
For Each subFolder In folder.SubFolders
TraverseFolders subFolder, ws, rowIndex
Next subFolder
' 释放对象
Set fileSystem = Nothing
End Sub
04 调整代码中的文件夹路径:
将 `folderPath` 变量中的路径替换为我们实际存放图片的根文件夹路径,本例子中的图片存放在桌面,路径为“E:\桌面\图片\”。
05 运行宏:
按 F5键或从Excel的宏菜单中,点击运行,选择”运行子过程/用户窗体”,在弹出的窗口中,选择刚刚创建的 CollectImageFileNames`宏来执行。
06 保存 Excel 文件:
执行完宏后,文件名将会保存在当前活动工作表的第一列中。我们可以根据需要进一步处理或保存这些文件名。

通过这段VBA代码,我们可以轻松获取多个照片名称,刚开始学习VBA都会觉得很吃力,俗话说得好,熟能生巧,只有通过不断地学习和实践,才能轻松掌握它!