使用VBA复制文件:5个示例代码

标签:VBA,FileCopy方法

我们可以使用VBA来复制文件,这里介绍5个实现VBA复制文件的示例。

示例1:复制文件

下面的代码将openpyxl.xlsx从文件夹D:\完美Excel\复制到D:\完美Excel\我的文章\。

代码语言:javascript复制Sub CopyFile()

FileCopy "D:\完美Excel\openpyxl.xlsx", _

"D:\完美Excel\我的文章\openpyxl.xlsx"

End Sub

注意,在本例中,文件名不变。

示例2:使用变量复制文件

在示例1中,文件名包含在FileCopy语句中。然而,它们也可以作为变量提供。

在下面的代码中:

声明变量将值赋值给变量变量用于FileCopy语句中代码语言:javascript复制Sub CopyFileVariables()

Dim copyFromFile As String

Dim copyToFile As String

copyFromFile = "D:\完美Excel\openpyxl.xlsx"

copyToFile = "D:\完美Excel\openpyxl-副本.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:\完美Excel\openpyxl.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:\完美Excel\openpyxl.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‘:权限被拒绝

[an error occurred while processing the directive]
Copyright © 2088 猎游热点-沙盒游戏创想基地 All Rights Reserved.
友情链接