百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

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

liuian 2025-02-06 15:41 37 浏览

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

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


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


1. 打开Excel并创建新宏


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


vba


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

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列表中的旧文件名和新文件名批量重命名文件夹中的文件。

总结


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

相关推荐

python入门到脱坑函数—定义函数_如何定义函数python

Python函数定义:从入门到精通一、函数的基本概念函数是组织好的、可重复使用的代码块,用于执行特定任务。在Python中,函数可以提高代码的模块性和重复利用率。二、定义函数的基本语法def函数名(...

javascript函数的call、apply和bind的原理及作用详解

javascript函数的call、apply和bind本质是用来实现继承的,专业点说法就是改变函数体内部this的指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能的对象里借用过来...

JS中 call()、apply()、bind() 的用法

其实是一个很简单的东西,认真看十分钟就从一脸懵B到完全理解!先看明白下面:例1obj.objAge;//17obj.myFun()//小张年龄undefined例2shows(...

Pandas每日函数学习之apply函数_apply函数python

apply函数是Pandas中的一个非常强大的工具,它允许你对DataFrame或Series中的数据应用一个函数,可以是自定义的函数,也可以是内置的函数。apply可以作用于DataF...

Win10搜索不习惯 换个设定就好了_window10搜索用不了怎么办

Windows10的搜索功能是真的方便,这点用惯了Windows10的小伙伴应该都知道,不过它有个小问题,就是Windows10虽然会自动联网搜索,但默认使用微软自家的Bing搜索引擎和Edge...

面试秘籍:call、bind、apply的区别,面试官为什么总爱问这三位?

引言你有没有发现,每次JavaScript面试,面试官总爱问你call、bind和apply的区别?好像这三个方法成了通关密码,掌握了它们,就能顺利过关。其实不难理解,面试官问这些问题,不...

记住这8招,帮你掌握“追拍“摄影技法—摄影早自习第422日

杨海英同学提问:请问叶梓老师,我练习追拍时,总也不能把运动的人物拍清晰,速度一般掌握在1/40-1/60,请问您如何把追拍拍的清晰?这跟不同的运动形式有关系吗?请您给讲讲要点,谢谢您!摄影:Damia...

[Sony] 有点残酷的测试A7RII PK FS7

都是好机!手中利器!主要是最近天天研究fs5,想知道fs5与a7rii后期匹配问题,苦等朋友的fs5月底到货,于是先拿手里现有的fs7小测一下,十九八九也能看到fs5的影子,另外也了解一下fs5k标配...

AndroidStudio_Android使用OkHttp发起Http请求

这个okHttp的使用,其实网络上有很多的案例的,但是,如果以前没用过,copy别人的直接用的话,可以发现要么导包导不进来,要么,人家给的代码也不完整,这里自己整理一下.1.引入OkHttp的jar...

ESL-通过事件控制FreeSWITCH_es事务控制

通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...

【调试】perf和火焰图_perf生成火焰图

简介perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些...

文本检索控件也玩安卓?dtSearch Engine发布Android测试版

dtSearchEngineforLinux(原生64-bit/32-bitC++和JavaAPIs)和dtSearchEngineforWin&.NET(原生64-bi...

网站后台莫名增加N个管理员,记一次SQL注入攻击

网站没流量,但却经常被SQL注入光顾。最近,网站真的很奇怪,网站后台不光莫名多了很多“管理员”,所有的Wordpres插件还会被自动暂停,导致一些插件支持的页面,如WooCommerce无法正常访问、...

多元回归树分析Multivariate Regression Trees,MRT

多元回归树(MultivariateRegressionTrees,MRT)是单元回归树的拓展,是一种对一系列连续型变量递归划分成多个类群的聚类方法,是在决策树(decision-trees)基础...

JMETER性能测试_JMETER性能测试指标

jmeter为性能测试提供了一下特色:jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试jmeter可以挖掘出系统最大能处...