打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA指定文件重命名(使用文件对话框选取)

使用VBA对excel、word等文件改名需要用到Name,比如以下代码是基础用法:

Sub 重命名文件()
Name "D:\VBA\新建 XLSX 工作表.xlsx" As "D:\VBA\重命名EXCEL文件.xlsx"
End Sub

要注意的是,使用Name重新命名文件时,重命名的文件必须处于未打开状态,否则代码会报错:

前面的基础用法虽然简单,但是需要人工写文件路径,容易写错名称和后缀导致改名失败,想要优化可以加入文件对话框通过选取文件来获取文件路径,并直接对基名称替换来重命名。代码如下:

Sub 文件对话框选择指定文件重命名1()
new_name = "重命名文件"   '定义文件的重命名(无需后缀)

Set FolderDialogObject = Application.FileDialog(msoFileDialogOpen)  '新建一个文件对话框对象,允许用户选择一个文件
With FolderDialogObject '配置对话框
.Title = "请选择要重命名的文件"
.InitialFileName = "C:\"
End With
FolderDialogObject.Show '显示对话框
Set paths = FolderDialogObject.SelectedItems    '获取选择对话框选择的文件

file_fullname = paths(1)       '返回文件路径+名称
file_basename = CreateObject("scripting.filesystemobject").getbasename(file_fullname)       '返回基名称
new_file_fullname = Replace(file_fullname, file_basename, new_name) '将原文件名替换为重命名
Name file_fullname As new_file_fullname
End Sub

以上代码优化了文件路径的填写,基础的操作不成问题,但是存在缺点,如果文件路径名称中存在与原文件名一致的字符时,以上代码就会报错,比如路径“D:\VBA待改名文件\待改名文件.xlsx”,以上代码的new_file_fullname会将路径改为“D:\VBA重命名文件\重命名文件.xlsx”,导致无法找到“VBA重命名文件”文件夹而报错。

想要完善代码的以上缺点,那就需要加入代码精准获取重命名的文件名在路径中的位置,只对其进行改名:

Sub 文件对话框选择指定文件重命名2()
new_name = "重命名文件"   '定义文件的重命名(无需后缀)

Set FolderDialogObject = Application.FileDialog(msoFileDialogOpen)  '新建一个文件对话框对象,允许用户选择一个文件
With FolderDialogObject '配置对话框
.Title = "请选择要重命名的文件"
.InitialFileName = "C:\"
End With
FolderDialogObject.Show '显示对话框
Set paths = FolderDialogObject.SelectedItems    '获取选择对话框选择的文件

file_fullname = paths(1)       '返回文件路径+名称
file_basename = CreateObject("scripting.filesystemobject").getbasename(file_fullname)       '返回基名称
Split_file_fullname = Split(file_fullname, "\" & file_basename & ".") '将文件路径+名称按“\基名称.”拆分
Serial_Number = UBound(Split_file_fullname) '根据拆分数组的最大下标,识别最后一个“\基名称.”在文件路径+名称第几位(序号)
new_file_fullname = Application.Substitute(file_fullname, "\" & file_basename & ".", "\" & new_name & ".", Serial_Number) '将原文件名替换为重命名
Name file_fullname As new_file_fullname
End Sub

代码优化的内容就是利用基名称在路径中前面有“\”后面有“.”且一定在路径最后的特性,用数组拆分路径获取其出现位置,再用Substitute代替了Replace对原文件名进行精准替换。

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
批量文件重命名
Excel·VBA文件重命名、移动
第206集怎么用vba命令新建、重命名以及保存工作簿
Java创建、重命名、删除文件和文件夹
11-110. 添加、重命名和删除
使用VBA重命名文件:5个代码示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服