Excel VBA FileCopyを使用してファイルコピーの実装 エラー回避

スポンサーリンク
スポンサーリンク

FileCopyを使用した実装

やりたい事

Templateファイルを元に別フォルダにファイルをコピーするプログラムを作成します。

考えられるエラー処理もいれて実装します。

FileCopyは、コピー先に同名ファイルがある場合には上書きしてしまうので今回は、同名ファイルがある場合はコピーせずに終了します。

今回のサンプルコードではエラーメッセージは、ログに出力ではなくMsgboxで出力とします。

サンプルコード

Sub copyFileSample2()

    Dim sourcePath As String
    Dim sourceFile As String
    Dim didtinationPath As String
    Dim distinationFile As String
    
    sourcePath = "D:\Excel"
    sourceFile = "macro.xlsm"
    distinationPath = "D:\Excel\work"
    distinationFile = "macro.xlsm"
    
    If Dir(sourcePath & "\" & sourceFile) = "" Then
        MsgBox "コピー元のファイルパスがみつかりません:" & sourcePath & "\" & sourceFile
        Exit Sub
    End If
    
    If Dir(distinationPath, vbDirectory) = "" Then
        MsgBox "コピー先のフォルダが見つかりません:" & distinationPath
        Exit Sub
    End If
    
    If Dir(distinationPath & "\" & distinationFile) <> "" Then
        MsgBox "コピー先に同名のファイルが存在します:" & distinationPath & "\" & distinationFile
        Exit Sub
    End If
    
    On Error Resume Next
    FileCopy sourcePath & "\" & sourceFile, distinationPath & "\" & distinationFile

    If Err.Number = 70 Then
        MsgBox "すでにファイルが開かれてます。ファイルを閉じてから実行してください。"
        Exit Sub
    End If

End Sub

参考資料

Docs

関連記事

Excel VBA ファイル(エクセルブック)をコピーする FileCopy
FileCopyステートメントを使用してファイルをコピーする やりたい事 エクセルブックを別のフォルダにFileCopyステートメントでコピーする方法を解説します。 FileCopyステートメントは、コピー先に同名ファイルがある場合は上書き...
Excel VBA ファイル(エクセルブック)をコピーする FileSystemObject
「FileSystemObject」使ってファイルをコピーする方法を解説します。FileCopyステートメントを使用してファイルコピーする方法は関連記事で解説しています。

コメント

タイトルとURLをコピーしました