使用VBA复制文件的5个实战示例

标签:VBA

本文使用FileCopy方法来复制粘贴文件。

示例1:直接复制文件

下面的代码将C盘“test”文件夹下的文件books.xlsx复制到D盘“完美Excel”文件夹中。

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

FileCopy "C:\test\books.xlsx", "D:\完美Excel\books.xlsx"

End Sub注:复制后的文件其名称没有变化。

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

在示例1中,直接在FileCopy语句中包括了文件名,下面的代码我们将其放置在变量中。

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

Dim strFromFile As String

Dim strToFile As String

strFromFile = "C:\test\books.xlsx"

strToFile = "D:\完美Excel\books-副本.xlsx"

FileCopy strFromFile, strToFile

End Sub注:复制文件到新位置并重命名该文件。

示例3:基于单元格值复制文件

复制单元格中内容包含的文件路径指定的文件名,如下图1所示。

图1

代码如下:

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

FileCopy ActiveSheet.Range("C2"), ActiveSheet.Range("C4")

End Sub示例4:复制前检查文件是否存在

FileCopy将覆盖文件而不会显示任何错误,因此在复制前检查文件是否已经存在很有必要。

下面的代码检查复制文件的目标位置中文件是否已存在,如果存在则弹出消息框来供选择。

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

Dim strFromFile As String

Dim strToFile As String

Dim msgBoxAnswer As Long

strFromFile = "C:\test\books.xlsx"

strToFile = "D:\完美Excel\books-副本.xlsx"

If Dir(strToFile) <> "" Then

msgBoxAnswer = MsgBox(Prompt:="目标位置文件已经存在." & vbNewLine & _

"你想覆盖掉吗?", Buttons:=vbYesNo, Title:="复制文件")

If msgBoxAnswer = vbNo Then

Exit Sub

End If

End If

FileCopy strFromFile, strToFile

End Sub示例5:复制文件时避免错误

如果发生错误则提供错误消息,代码如下:

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

Dim strFromFile As String

Dim strToFile As String

Dim msgBoxAnswer As Long

strFromFile = "C:\test\books.xlsx"

strToFile = "D:\完美Excel\books-副本.xlsx"

On Error Resume Next

If Dir(strToFile) <> "" Then

msgBoxAnswer = MsgBox(Prompt:="目标位置文件已经存在." & vbNewLine & _

"你想覆盖掉吗?", Buttons:=vbYesNo, Title:="复制文件")

If msgBoxAnswer = vbNo Then

Exit Sub

End If

End If

FileCopy strFromFile, strToFile

If Err.Number <> 0 Then

MsgBox Prompt:="不能复制文件", Buttons:=vbOKCancel, Title:="复制文件错误"

End If

On Error GoTo 0

End Sub注:FileCopy不能复制完整文件夹,仅复制文件。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。


TOP