分享

vba批量重命名文件

 莫怜飘逸 2023-09-25

在需要将一些文件名称修改成特定的名称时,如果文件比较多的话,手动修改费时费力,vba可以借助工作表,批量重命名文件。

首先,要在工作簿中建立一个用于改名的工作表,如下图,在B1单元格中输入改名文件所在的文件夹:

接着获取要更改的文件名(原文件名),获取的方法有很多种,可以使用batch(批处理):

DIR *.* /B> 文件名清单.txt
pause

也可以使用vba:

Sub 获取指定目录下的文件名()
Dim row As Integer
row = 4 '设定单元格中存放文件名的起始行
Path = Cells(1, 2) & IIf(Right(Cells(1, 2), 1) = "\", "", "\")  '将文件所在文件夹路径赋予变量,并最后补加“\”
file_name = Dir(Path, vbDirectory)   '在path所代表的文件夹搜索,将找到的第一个文件或文件夹名称赋予变量str
Do While Len(file_name) <> 0 '当str不为空字符串时进入循环
    If file_name <> "." And file_name <> ".." And GetAttr(Path & file_name) <> 16 Then   '检测排除上一级目录标识和文件夹
        Cells(row, 1) = file_name '将找到的文件名赋予单元格
        row = row + 1 '每循环一次变量加1
    End If
    file_name = Dir '如果希望dir函数返回指定文件夹里面多个文件名,只需要在同一过程里面再次调用dir函数即可,而且后面的调用不需要指定参数
Loop
End Sub

获取文件名到左侧的“原文件名”的结果如下图:

接下来补充右侧的“修改后文件名”:

补充“修改后文件名”后,就可以使用以下vba代码批量改名文件:

Sub 批量重命名文件()
row = 4 '设定单元格中存放文件名的起始行
maxrow = ActiveSheet.UsedRange.Rows.Count       '当前活动工作表的行长
Path = Cells(1, 2) & IIf(Right(Cells(1, 2), 1) = "\", "", "\")  '将文件所在文件夹路径赋予变量,并最后补加“\”
For i = row To maxrow
    a_file_fullname = Path & Cells(i, 1) '原文件路径+名称
    b_file_fullname = Path & Cells(i, 2) '修改后文件路径+名称
    Name a_file_fullname As b_file_fullname '文件改名
Next
End Sub

以上内容对您有帮助可以分享或转藏,避免以后找不到。想要了解更多VBA相关知识,欢迎到http://moqingyan.360doc.com我的个人图书馆查看。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多