Excel VBA批量获取文件夹内文件名及重命名文件教程

在本文中,我们将介绍如何使用Excel VBA宏来批量获取文件夹内的文件名,并将其输出到Excel单元格区域。此外,我们还将展示如何根据Excel中的列表批量重命名这些文件。

一、批量获取文件夹内文件名

首先,我们需要编写一个VBA宏来列出指定文件夹内的所有文件名称。以下是实现该功能的步骤和代码:

1. 打开Excel并创建新宏

  • 打开Excel,按下 Alt + F11 键打开VBA编辑器。
  • 在"项目-工程"窗口中,右击你的工作簿名称,选择"插入" -> "模块"。
  • 在打开的模块窗口中,复制并粘贴以下代码:

vba

vbscript 复制代码
Sub ListFilesInFolder()
    Dim folderPath As String
    Dim fileName As String
    Dim i As Integer
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    
    ' 设置文件夹路径
    folderPath = "D:\downloads\" ' 请修改为你的文件夹路径
    
    ' 初始化变量
    i = 1
    
    ' 创建FileSystemObject对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 获取文件夹对象
    Set folder = fso.GetFolder(folderPath)
    
    ' 清空目标单元格区域
    Range("A1:A" & Rows.Count).ClearContents
    
    ' 遍历文件夹内的文件
    For Each file In folder.Files
        ' 获取文件名称
        fileName = file.Name
        ' 将文件名输出到单元格
        Cells(i, 1).Value = fileName
        ' 移动到下一行
        i = i + 1
    Next file
    
    ' 清理对象
    Set file = Nothing
    Set folder = Nothing
    Set fso = Nothing
End Sub

2. 运行宏

  • 返回Excel界面,按下 Alt + F8,选择 ListFilesInFolder 宏并运行。
  • 该宏会将指定文件夹内的所有文件名称输出到工作表的A列,从A1单元格开始。

二、批量重命名文件

接下来,我们将编写另一个VBA宏来根据Excel中的列表批量重命名文件夹中的文件。

1. 准备工作表

  • 在Excel中创建一个工作表,例如命名为"Sheet1"。
  • 在该工作表中,创建两列:一列是旧文件名,另一列是你想要的新文件名。

2. 编写宏

  • 在VBA编辑器中,添加以下宏:

vba

vbscript 复制代码
Sub BatchRenameFiles()
    Dim ws As Worksheet
    Dim OldFileName As String
    Dim NewFileName As String
    Dim i As Long
    Dim SourceFolder As String
    Dim FileCount As Long
    
    ' 设置源文件夹路径
    SourceFolder = "D:\downloads" ' 请修改为你的文件夹路径
    
    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 修改为包含文件名的工作表名称
    
    ' 计算文件数量
    FileCount = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 禁用屏幕更新和警告消息
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' 遍历文件名列表
    For i = 2 To FileCount ' 假设第一行是标题,从第二行开始
        OldFileName = SourceFolder & ws.Cells(i, 1).Value  ' 旧文件名
        NewFileName = SourceFolder & ws.Cells(i, 2).Value & ".mp4" ' 新文件名
        
        ' 检查文件是否存在,然后重命名
        If Dir(OldFileName) <> "" Then
            Name OldFileName As NewFileName
        Else
            Debug.Print "文件 " & OldFileName & " 不存在。"
        End If
    Next i
    
    ' 启用屏幕更新和警告消息
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    MsgBox "文件重命名完成。"
End Sub

3. 运行宏

  • 返回Excel界面,按下 Alt + F8,选择 BatchRenameFiles 宏并运行。
  • 宏会根据Excel列表中的旧文件名和新文件名批量重命名文件夹中的文件。

总结

通过以上两个宏,我们可以轻松地批量获取文件夹内的文件名,并根据需求批量重命名文件。在进行这些操作之前,请确保备份重要文件,以防意外发生。希望本文能帮助你在工作中提高效率。

相关推荐
远洪8 小时前
excel 找出两列不同的数据
excel
pcplayer8 小时前
非常好用的 Excel 读写控件
excel·delphi·office
Navicat中国12 小时前
使用 Navicat 导入向导导入 Excel 数据时,系统提示导入成功,表中也能看到数据,但行数统计显示为 0,这是什么原因?
数据库·excel·导入
穿着内裤的外星人14 小时前
触控精灵远程读写Excel步骤配置
excel
是孑然呀19 小时前
【小记】excel vlookup一对多(第二篇)
excel
开开心心就好20 小时前
专为视障人士设计的免费辅助工具
windows·计算机视觉·计算机外设·excel·散列表·推荐算法·csdn开发云
transformer_WSZ20 小时前
excel两列数据绘制折线图
excel·折线图
蒋胜山1 天前
Excel 练习题(5)
经验分享·excel
Data-Miner1 天前
数以轻舟聚焦Excel-Agent场景:当AI做表工具学会说人话
人工智能·excel
夏日清风有你2 天前
Excel 中绘制散点图(Scatter Plot)
excel