概要

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のツールです。この関数を使いこなすことで、手動操作の手間を減らし、作業を自動化することが可能です。