除Name语句与FileSystemObject.MoveFile外,如何重命名Excel工作簿?
工作簿重命名的其他实现方法
假设桌面上有一个名为Test.xlsm的工作簿,需要在同一路径下将其重命名为Test2.xlsm,除了已知的Name语句和FileSystemObject方法外,还有以下几种实现方式:
方法1:调用Shell执行DOS命令
通过VBA调用系统Shell执行ren命令完成重命名,适合处理未打开的文件:
Sub Rename_using_Shell_DOS() Dim oldName As String, newName As String oldName = "D:\Users\UserName\Desktop\Test.xlsm" newName = "D:\Users\UserName\Desktop\Test2.xlsm" ' 路径含空格时需用引号包裹,避免命令执行出错 Shell "cmd /c ren """ & oldName & """ """ & newName & """", vbHide End Sub
方法2:调用Shell执行PowerShell命令
利用PowerShell的Rename-Item cmdlet实现,适用于未打开的文件:
Sub Rename_using_Shell_PowerShell() Dim oldName As String, newName As String oldName = "D:\Users\UserName\Desktop\Test.xlsm" newName = "D:\Users\UserName\Desktop\Test2.xlsm" ' 构建PowerShell命令,路径用引号包裹 Shell "powershell -Command Rename-Item -Path """ & oldName & """ -NewName """ & newName & """", vbHide End Sub
方法3:通过Excel对象模型(针对打开的工作簿)
如果目标工作簿处于打开状态,可通过另存为新名称再删除原文件的方式实现:
Sub Rename_using_Excel_Object_Model() Dim wb As Workbook Dim oldPath As String, newPath As String oldPath = "D:\Users\UserName\Desktop\Test.xlsm" newPath = "D:\Users\UserName\Desktop\Test2.xlsm" ' 打开原工作簿 Set wb = Workbooks.Open(oldPath) ' 按原格式另存为新名称 wb.SaveAs Filename:=newPath, FileFormat:=wb.FileFormat ' 关闭新保存的工作簿 wb.Close SaveChanges:=False ' 删除原文件 Kill oldPath End Sub
方法4:使用WScript.Shell对象
通过WScript.Shell的Run方法执行重命名操作,支持控制窗口显示和等待命令执行完成:
Sub Rename_using_WScript_Shell() Dim wsShell As Object Dim oldName As String, newName As String oldName = "D:\Users\UserName\Desktop\Test.xlsm" newName = "D:\Users\UserName\Desktop\Test2.xlsm" Set wsShell = CreateObject("WScript.Shell") ' 0表示隐藏窗口,True表示等待命令执行完成 wsShell.Run "cmd /c ren """ & oldName & """ """ & newName & """", 0, True End Sub
内容的提问来源于stack exchange,提问作者Waleed
相关产品推荐
相关产品推荐

