ファイルのコピー(上書き確認)

ファイルのコピーする処理を関数化。
既に同じファイルがある場合、上書き確認を行います。
ファイルが開いている場合にはエラーが発生するため、エラー処理も行っています。
送信先のファイル名を変更することができます。

' ------------------------------------------------------------
' 説明:ファイルのコピー(上書き確認)
' 引数:1:コピー元のファイル名
'       2:コピー先のファイル名
' 備考:既にファイルがある場合は確認ダイアログが表示されます
'       エラーが発生した場合は、エラーの詳細情報が表示されます
' ------------------------------------------------------------
Sub FileCopyOwConfirm(SourceFilename, DestinationFilename)
    Dim fso As Scripting.FileSystemObject
    Dim result As Integer
    
    ' オブジェクトを作成
    Set fso = New Scripting.FileSystemObject
    
    ' エラー発生時の処理
    On Error GoTo ErrorProc
    
    ' コピー元のファイルが無い場合 → 終了
    If fso.FileExists(SourceFilename) = False Then
        MsgBox "コピー元のファイルが存在しません。", vbExclamation, "FileCopyOwConfirm"
        Set fso = Nothing
        Exit Sub
    End If
    
    ' コピー先にファイルが有る場合 → 確認 → 上書きしない場合は終了
    If fso.FileExists(DestinationFilename) = True Then
        result = MsgBox("コピー先にファイルが存在します。上書きしますか?", vbQuestion + vbYesNo, "FileCopyOwConfirm")
        If result = vbNo Then
            ' コピーしない場合
            Set fso = Nothing
            Exit Sub
        End If
    End If
    
    ' ファイルのコピー処理(True で上書き)
    fso.CopyFile SourceFilename, DestinationFilename, True
    Set fso = Nothing
    Exit Sub

' エラー処理
ErrorProc:
    MsgBox "エラーが発生しました。 (" & Err.Number & ")" & vbCrLf & "内容: " & Err.Description, vbExclamation, "FileCopyOwConfirm"
    Set fso = Nothing
End Sub

【補足】

Scripting.FileSystemObject を使用しています。
初期設定では、エラーが発生するので、参照設定「Microsoft Scripting Runtime」の設定が必要です。

コメント