标签:VBA,FileCopy方法
我们可以使用VBA来复制文件,这里介绍5个实现VBA复制文件的示例。
示例1:复制文件
下面的代码将openpyxl.xlsx从文件夹D:完美Excel复制到D:完美Excel我的文章。
代码语言:javascript复制Sub CopyFile()
FileCopy "D:完美Excelopenpyxl.xlsx", _
"D:完美Excel我的文章openpyxl.xlsx"
End Sub
注意,在本例中,文件名不变。
示例2:使用变量复制文件
在示例1中,文件名包含在FileCopy语句中。然而,它们也可以作为变量提供。
在下面的代码中:
- 声明变量
- 将值赋值给变量
- 变量用于FileCopy语句中
Sub CopyFileVariables()
Dim copyFromFile As String
Dim copyToFile As String
copyFromFile = "D:完美Excelopenpyxl.xlsx"
copyToFile = "D:完美Excelopenpyxl-副本.xlsx"
FileCopy copyFromFile, copyToFile
End Sub
注意,在本例中,不会将文件复制到新位置,但将其从openpyxl.xlsx重命名为openpyxl-副本.xlsx。
示例3:基于单元格值复制文件
在本例中,我们使用单元格值中包含的文件路径复制文件。
如下图1所示,单元格C2包含当前文件路径,单元格C4包含文件要复制到的路径。
图1
可以运行下面的代码来使用这些单元格值重命名文件。
代码语言:javascript复制Sub CopyFileCellValue()
FileCopy ActiveSheet.Range("C2"), _
ActiveSheet.Range("C4")
End Sub
注意,在本例中,文件被复制到一个新文件夹,并从openpyxl.xlsx重命名为openpyxl-副本.xlsx。
示例4:在VBA复制之前检查文件是否存在
FileCopy命令将覆盖文件,而不会显示任何错误。因此,在复制文件之前,最好先检查文件是否已经存在。
下面的代码检查目标位置中是否存在文件。如果文件存在,则会出现一个带有“是/否”选项的消息框。单击“否”将退出宏。
代码语言:javascript复制Sub CheckTargetFileCopy()
Dim copyFromFile As String
Dim copyToFile As String
Dim msgBoxAnswer As Long
copyFromFile = "D:完美Excelopenpyxl.xlsx"
copyToFile = "D:完美Excel我的文章openpyxl-副本.xlsx"
If Dir(copyToFile) <> "" Then
msgBoxAnswer = MsgBox(Prompt:="在此位置中该文件已存在." & _
vbNewLine & "你想覆盖它?", Buttons:=vbYesNo, _
Title:="复制文件")
If msgBoxAnswer = vbNo Then
Exit Sub
End If
End If
FileCopy copyFromFile, copyToFile
End Sub
示例5:复制文件时避免错误
复制文件可能会引发错误。下面的代码构建在示例4的基础上,如果出现任何错误,也会显示一个错误消息框。
代码语言:javascript复制Sub FileCopyPlus()
Dim copyFromFile As String
Dim copyToFile As String
Dim msgBoxAnswer As Long
copyFromFile = "D:完美Excelopenpyxl.xlsx"
copyToFile = "D:完美Excel我的文章openpyxl-副本.xlsx"
On Error Resume Next
If Dir(copyToFile) <> "" Then
msgBoxAnswer = MsgBox(Prompt:="在此位置中该文件已存在." & _
vbNewLine & "你想覆盖它?", Buttons:=vbYesNo, _
Title:="复制文件")
If msgBoxAnswer = vbNo Then
Exit Sub
End If
End If
FileCopy copyFromFile, copyToFile
If Err.Number <> 0 Then
MsgBox Prompt:="不能复制文件", _
Buttons:=vbOKCancel, _
Title:="复制文件错误"
End If
On Error GoTo 0
End Sub
在自动化复制文件时可能会导致错误,下面是一些常见错误:
- 复制不存在的文件会触发错误:运行时错误’53’:找不到文件。
- 将文件复制到锁定的文件位置(即另一个用户打开了该文件)会触发错误:运行时错误‘0‘:权限被拒绝