我在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
答案 0 :(得分:0)
对于第一期,您只需在Exit Sub
标签前添加ErrHandler:
对于第二个问题,您可以尝试类似(未经测试):
myFile = dir(SourcePath & "\" & Range("A" & r))
FileCopy SourcePath & "\" & myFile, dstPath & "\" & myFile
这样myFile将包含原始的源案例。