ファイルをコピーする方法
スポンサーリンク
Excel VBA でファイルをコピーするには、ファイルシステムオブジェクトの Copy メソッドを使用します。
コピー先のファイルが存在する場合、上書きコピーする方法
上書きコピー時の書式は次の通りです。
VBA(書式) | |
1 2 3 4 5 6 7 8 9 | 'ファイルを上書きでコピーする。 Call ファイルシステムオブジェクト.Copy(コピー元, コピー先) '以下も同じ。 Call ファイルシステムオブジェクト.Copy(コピー元, コピー先, True) '※3つ目の引数は次の通り。 ' True:コピー先にファイルがある場合、上書きする。 ' false:コピー先にファイルがある場合、エラーを発生させる。 |
サンプルコードは次の通りです。
VBA(実行可能なサンプルコード) | |
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 | Option Explicit Sub test() Dim objFileSys Dim strFilePathFrom Dim strFilePathTo 'ファイルシステムを扱うオブジェクトを作成 Set objFileSys = CreateObject("Scripting.FileSystemObject") 'コピー元のファイルのパスを指定 strFilePathFrom = "c:\temp\コピー元.txt" strFilePathTo = "c:\temp\コピー先.txt" 'エラー発生時にも処理を続行するよう設定 On Error Resume Next 'ファイルを上書きコピー Call objFileSys.CopyFile(strFilePathFrom, strFilePathTo) '元ファイルが無いなど、エラーになった場合の処理 If Err.Number <> 0 Then 'ここにエラー時の処理を記述 MsgBox "ファイルコピー時にエラーが発生しました。" & vbNewLine & _ "エラー番号:" & Err.Number & vbNewLine & _ "エラー詳細:" & Err.Description 'エラー情報をクリアする。 Err.Clear End If '「On Error Resume Next」を解除 On Error GoTo 0 Set objFileSys = Nothing End Sub |
コピー先のファイルが存在しない場合のみコピーする方法
上書きコピー時の書式は次の通りです。
VBA(書式) | |
1 2 | 'コピー先にファイルが存在しない場合のみコピー。ある場合はエラーが発生する。 Call ファイルシステムオブジェクト.Copy(コピー元, コピー先, False) |
サンプルコードは次の通りです。
VBA(実行可能なサンプルコード) | |
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 37 | Option Explicit Sub test() Dim objFileSys Dim strFilePathFrom Dim strFilePathTo 'ファイルシステムを扱うオブジェクトを作成 Set objFileSys = CreateObject("Scripting.FileSystemObject") 'コピー元のファイルのパスを指定 strFilePathFrom = "c:\temp\コピー元.txt" strFilePathTo = "c:\temp\コピー先.txt" 'エラー発生時にも処理を続行するよう設定 On Error Resume Next 'コピー先に同名のファイルが無い場合のみコピー Call objFileSys.CopyFile(strFilePathFrom, strFilePathTo, False) 'コピー先に同名のファイルがある場合や元ファイルが無い等 'エラーになった場合の処理 If Err.Number <> 0 Then 'ここにエラー時の処理を記述 MsgBox "ファイルコピー時にエラーが発生しました。" & vbNewLine & _ "エラー番号:" & Err.Number & vbNewLine & _ "エラー詳細:" & Err.Description 'エラー情報をクリアする。 Err.Clear End If '「On Error Resume Next」を解除 On Error GoTo 0 Set objFileSys = Nothing End Sub |
スポンサーリンク