前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VBA复制文件:5个示例代码

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

作者头像
fanjy
发布2022-11-16 10:56:44
3K0
发布2022-11-16 10:56:44
举报
文章被收录于专栏:完美Excel

标签: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‘:权限被拒绝
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档