标签:VBA,Name方法
使用Name命令来重命名文件。
示例1:重命名文件
下面的代码将文件从date.xlsx重命名为date-重命名.xlsx。
代码语言:javascript复制Sub RenameFile()
Name "D:完美Exceldate.xlsx" As _
"D:完美Excel我的文章date-重命名.xlsx"
End Sub
示例2:基于单元格值重命名文件
如下图1所示,单元格C2中是当前文件名称,单元格C4中是新文件名称。
图1
使用单元格值来重命名文件的代码:
代码语言:javascript复制Sub RenameFileUseCellValue()
Name ActiveSheet.Range("C2") As _
ActiveSheet.Range("C4")
End Sub
示例3:使用Name命令移动文件
注意到Name命令需要文件路径和文件名吗?因此,该命令不仅可以重命名文件,还可以移动文件。例如,下面的代码将文件从D:完美Excel移动到D:完美Excel我的文章,但文件名保持不变。
代码语言:javascript复制Sub MoveFile()
Name "D:完美Excelstores.xlsx" As _
"D:完美Excel我的文章stores.xlsx"
End Sub
示例4:重命名文件时避免错误
移动文件可能会引发错误。为了避免执行Visual Basic错误调试过程,可以显示一个带有“确定”按钮的消息框。
代码语言:javascript复制Sub AdvancedRenameFile()
Dim filePath As String
Dim newFilePath As String
filePath = "D:完美Excelstores.xlsx"
newFilePath = "D:完美Excelstores-重命名.xlsx"
On Error Resume Next
Name filePath As newFilePath
If Err.Number <> 0 Then
MsgBox Prompt:="不能重命名文件", _
Buttons:=vbOKOnly, _
Title:="重命名文件错误"
End If
On Error GoTo 0
End Sub
示例5:可重用函数
可以创建一个可重用函数。下面的VBA自定义函数接受两个参数:现有文件路径和新文件路径。
代码语言:javascript复制Function RenameFile(filePath As String, newFilePath As String)
On Error Resume Next
Name filePath As newFilePath
If Err.Number <> 0 Then
RenameFile = False
Else
RenameFile = True
End If
On Error GoTo 0
End Function
可以有两种方式使用这个函数:
1.从另一个过程调用。
代码语言:javascript复制Sub CallRenameFile()
Dim filePath As String
Dim newFilePath As String
filePath = "D:完美Excelstores.xlsx"
newFilePath = "D:完美Excelstores-重命名.xlsx"
MsgBox RenameFile(filePath, newFilePath)
End Sub
返回包含“True”的消息框,表示文件被重命名;返回包含“False”的消息框,表示发生错误。
2.在工作表中像Excel内置函数一样调用。
图2
TRUE表示以单元格C2中值命名的文件已成功重命名为单元格C4中值的文件。如果我们再次运行该函数,它将显示FALSE,因为文件已经重命名。
可能的错误
如果试图重命名不存在的文件或文件夹路径,则会触发错误:运行时错误'53’:未找到文件。如果新文件名与现有文件名相同,则会触发以下错误:运行时错误’58’:文件已存在。