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

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

FileCopyを使用した実装

やりたい事

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

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

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

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

サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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をコピーしました