2016-03-01 273 views
0

我已經在excel中創建了該宏,使用戶可以將多個文件從一個文件夾複製到另一個文件夾。宏的工作原理,它做它應該做的事。我只是想添加一些額外的功能,我不能使它工作。這些是我想要添加的幾件事:excel vba宏將多個文件從文件夾複製到文件夾

1檢查目標文件夾中是否存在文件,並詢問用戶是否要覆蓋yes/no。如果是覆蓋,則不跳至下一個要複製的文件。

2-如果源文件夾中缺少文件,ErrHandler會將缺少的文件的名稱從A列複製到M列。我做到這一點的方式很有效,但這不是我想要的。我想要的是,如果單元格A3,A7,A10中的文件名缺失。這些名字應該被複制到M1,M2,M3等等。而不是將它們複製到M3,M7,M10

的,我也有其他的2個問題:

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

對於第一個問題,你只需要ErrHandler:標籤前添加Exit Sub
對於第二個問題,你可以嘗試像(未經測試):

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

這樣MYFILE將包含原始來源情況。

相關問題