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

2023-08-29 21:06:14 浏览数 (2)

标签:VBA

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

示例1:直接复制文件

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

代码语言:javascript复制
Sub CopyFile()
 FileCopy "C:testbooks.xlsx", "D:完美Excelbooks.xlsx"
End Sub

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

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

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

代码语言:javascript复制
Sub CopyFileUseVariables()
 Dim strFromFile As String
 Dim strToFile As String
 
 strFromFile = "C:testbooks.xlsx"
 strToFile = "D:完美Excelbooks-副本.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:testbooks.xlsx"
 strToFile = "D:完美Excelbooks-副本.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:testbooks.xlsx"
 strToFile = "D:完美Excelbooks-副本.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不能复制完整文件夹,仅复制文件。

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

0 人点赞