OfficeType

VBA~ファイルをコピーしよう~Excel

ファイルをコピーしたい時はFileCopyステートメントを使います。

構文

FileCopy コピー元パス, コピー先パス

簡単な例

下のコードを実行するとCドライブのサンプルというテキストファイルがDドライブにコピーされます。

Sub test1()
FileCopy "C:\サンプル.txt", "D:\サンプル.txt"
End Sub

上書き確認

上の簡単な例ではコピー先に同名ファイルがある場合上書きされます。その際メッセージ確認は出ないので同名ファイルがある時にメッセージを表示するようにすると誤って上書きすることを回避できます。下のコードはIf文の条件式にDir関数を使っています。Dir関数はDir(パス,属性)で属性に確認したいファイルの属性に対応した定数を指定します。属性を省略するとパスに一致する標準ファイルが返されるので今回は省略します。パスに確認したいファイルのパスを指定しファイルがあれば、ファイル名を返し、なければ長さ0の文字列""を返します。今回の場合はファイルがある場合にメッセージを表示するので条件式はDir("C:\サンプル.txt") <> ""になり、Dドライブにサンプル.txtというファイルがある場合にメッセージが表示されます。"いいえ"を選択した場合は次のIf文の条件式rc = vbNoをみたすのでIf文の処理のExit Subを実行し上書きせずにコードが終了します。"はい"を選択した場合はrc = vbNoの条件式を満たさないのでExit Subは実行せずに最後に書かれているFileCopy "C:\サンプル.txt", "D:\サンプル.txt"を実行しファイルを上書きコピーします。

Sub test2()
Dim rc As Long
If Dir("D:\サンプル.txt") <> "" Then
rc = MsgBox("同名ファイルがあります。上書きしますか?", vbYesNo)
If rc = vbNo Then
Exit Sub
End If
End If
FileCopy "C:\サンプル.txt", "D:\サンプル.txt"
End Sub

image-01