概要
FileCopy
関数は、Excel VBAでファイルを指定した場所にコピーするためのシンプルな関数です。ソースファイルからターゲットファイルに対してデータをコピーする際に利用されます。ファイルのバックアップ、テンプレートの複製、ログファイルの保存など、さまざまなシナリオで役立ちます。
構文
FileCopy ソース, ターゲット
パラメータ
-
ソース
コピー元のファイルパスを指定します。このファイルが存在しない場合、エラーが発生します。
-
ターゲット
コピー先のファイルパスを指定します。指定したパスが存在しない場合でも、ファイル名と拡張子を含めた正しいパスであれば新しいファイルとしてコピーされます。
戻り値
この関数には戻り値はありません。指定されたファイルをコピー先にコピーするだけです。
説明
FileCopy
関数は、VBAを使用したファイル操作の中でも特に簡単で便利なものです。この関数を使うことで、手動でファイルを移動する手間を省き、必要なファイルを自動で管理できます。ただし、フォルダのコピーやファイルのリネーム機能はないため、ファイルのみを扱う用途に限られます。
-
簡単な操作
コードはシンプルで、コピー元とコピー先のパスを指定するだけで機能します。
-
注意点
コピー先に同名のファイルがある場合、それを上書きすることはなく、新しいコピーを作成します。また、コピー中に元のファイルが使用中であった場合や、ファイルが読み取り専用の場合にはエラーが発生することがあります。
使用例
基本的なファイルのコピー
Sub CopyFileExample()
Dim sourcePath As String
Dim targetPath As String
sourcePath = "C:\Users\Username\Documents\original.txt"
targetPath = "C:\Users\Username\Documents\backup.txt"
' ファイルをコピー
FileCopy sourcePath, targetPath
MsgBox "ファイルが正常にコピーされました。"
End Sub
ファイルの存在を確認してからコピーする
Sub CopyFileIfExists()
Dim sourcePath As String
Dim targetPath As String
sourcePath = "C:\Users\Username\Documents\original.txt"
targetPath = "C:\Users\Username\Documents\backup.txt"
' ファイルが存在する場合のみコピー
If Dir(sourcePath) <> "" Then
FileCopy sourcePath, targetPath
MsgBox "ファイルが正常にコピーされました。"
Else
MsgBox "コピー元のファイルが見つかりません。"
End If
End Sub
ファイルが使用中の場合のエラーハンドリング
Sub CopyFileWithErrorHandling()
Dim sourcePath As String
Dim targetPath As String
sourcePath = "C:\Users\Username\Documents\original.txt"
targetPath = "C:\Users\Username\Documents\backup.txt"
On Error GoTo ErrorHandler
FileCopy sourcePath, targetPath
MsgBox "ファイルが正常にコピーされました。"
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
End Sub
備考
-
エラー処理
FileCopy
関数を使用する際に、ファイルが使用中であったり、読み取り専用の状態の場合にはエラーが発生します。このため、エラーハンドリングを適切に行うことが推奨されます。 -
フォルダのコピーは不可
FileCopy
はファイルのみのコピーに使用できます。フォルダのコピーを行う場合は、FileSystemObject
を使用する必要があります。 -
ファイルの上書きについて
FileCopy
関数は、ターゲット先に同名のファイルが存在する場合でも自動的に上書きすることはありません。上書きが必要な場合は、事前にターゲットファイルを削除するコードを追加する必要があります。
FileCopy
関数は、簡単なファイル操作を行うために非常に便利なVBAのツールです。この関数を使いこなすことで、手動操作の手間を減らし、作業を自動化することが可能です。