【问题标题】:excel vba macro copy multiple files from folder to folderexcel vba宏将多个文件从文件夹复制到文件夹
【发布时间】:2016-06-14 02:07:58
【问题描述】:

我在 excel 中创建了这个宏,使用户能够将多个文件从一个文件夹复制到另一个文件夹。宏工作,它做它应该做的事情。我只是想给它添加一些额外的功能,但我无法让它工作。这些是我想补充的几件事:

1-检查目标文件夹中是否已存在文件并询问用户是否要覆盖是/否。如果是覆盖,如果不是跳到下一个要复制的文件。

2-如果源文件夹中缺少文件,ErrHandler 将丢失文件的名称从 A 列复制到 M 列。我这样做的方式有效,但这不是我想要的方式。我想要的是,如果单元格 A3、A7、A10 中的文件名丢失。这些名称应复制到 M1、M2、M3 等。而不是将它们复制到 M3、M7、M10

我还有另外两个问题:

1- ErrHandler 消息框出现的次数超出了应有的范围。复制完成后,它仍会再显示 2 次。

2-它重写文件名的写入方式的宏。例如,如果原始文件名用小写字母写在一个单元格中,我用大写字母写它。复制文件后,它将以大写形式写入。我想保留原来的名字。

    Dim r As Long
    Dim SourcePath As String
    Dim dstPath As String
    Dim myFile As String

    SourcePath = Range("F1")
    dstPath = Range("F3")

    On Error GoTo ErrHandler

    For r = 1 To 3000
        myFile = Range("A" & r)
        FileCopy SourcePath & "\" & myFile, dstPath & "\" & myFile

        If Range("A" & r) = "" Then 
           Exit For
        End If

    Next r

        MsgBox "The file(s) can found in: " & vbNewLine & dstPath, , "COPY COMPLETED"

ErrHandler:
    MsgBox "Copy error: " & SourcePath & "\" & myFile & vbNewLine & vbNewLine & _
    "File could not be found in the source folder", , "MISSING FILE(S)"

Range("A" & r).Copy Range("M" & r)

Resume Next

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    对于第一个问题,您只需在ErrHandler: 标签前添加一个Exit Sub
    对于第二个问题,您可以尝试以下方法:

    myFile = dir(SourcePath & "\" & Range("A" & r))
    FileCopy SourcePath & "\" & myFile, dstPath & "\" & myFile
    

    这样 myFile 将包含原始源案例。

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2018-08-06
      相关资源
      最近更新 更多