VBAでファイルをコピーする|サンプルコード多数

この記事では、VBAでファイルをコピーする方法について、サンプルコードを用いて、各機能の使い方を丁寧に説明します。

目次

FileCopyステートメントの基本

基本的な構文

FileCopyステートメントの基本的な構文は以下です。

FileCopy コピー元, コピー先
項目説明
コピー元コピーするファイルのフルパス。
コピー先コピー先のファイルのフルパス。

基本的なファイルコピー

基本的なファイルコピーのサンプルコードは下記の通りです。

Sub BasicFileCopy()
    ' コピー元とコピー先のファイルパスを指定
    FileCopy "C:\Source\BasicFile.txt", "C:\Destination\BasicFile.txt"
End Sub

処理の流れ

  1. FileCopyステートメントで、コピー元のC:\Source\BasicFile.txtとコピー先のC:\Destination\BasicFile.txtを指定します。
  2. コードを実行すると、指定したファイルがコピーされます。

ファイルの複製とリネーム

同じフォルダ内でのファイル複製のサンプルコードは下記の通りです。

Sub DuplicateFileInSameFolder()
    Dim i As Long
    ' 1から5までループ
    For i = 1 To 5
        FileCopy "C:\Source\Sample.docx", "C:\Source\Sample_" & i & ".docx"
    Next i
End Sub

処理の流れ

  1. Forループで、iが1から5まで変化するように設定します。
  2. FileCopyステートメントで、コピー元のファイルとコピー先のファイル名(iを含む)を指定します。
  3. コードを実行すると、指定したファイルが5回複製されます。

上書きの確認

同名のファイルが存在する場合に上書き確認を出すサンプルコードは下記の通りです。

Sub ConfirmBeforeOverwrite()
    Dim ret As Long
    ' コピー先に同名のファイルが存在するか確認
    If Dir("C:\Destination\BasicFile.txt") <> "" Then
        ret = MsgBox("同名のファイルが存在します。上書きしますか?", vbYesNo)
        If ret = vbNo Then Exit Sub
    End If
    FileCopy "C:\Source\BasicFile.txt", "C:\Destination\BasicFile.txt"
End Sub

処理の流れ

  1. Dir関数で、コピー先に同名のファイルが存在するか確認します。
  2. 同名のファイルが存在する場合、MsgBox関数で確認メッセージを表示します。
  3. 「はい」を選択した場合のみ、FileCopyステートメントでファイルをコピーします。

複数のファイルを一括でコピー

複数のファイルを一括でコピーするサンプルコードは下記の通り。

Sub BatchFileCopy()
    Dim i As Long
    Dim fileNames As Variant
    ' コピーするファイル名の配列
    fileNames = Array("File1.txt", "File2.txt", "File3.txt")
    
    For i = LBound(fileNames) To UBound(fileNames)
        FileCopy "C:\Source\" & fileNames(i), "C:\Destination\" & fileNames(i)
    Next i
End Sub

処理の流れ

  1. fileNames配列に、コピーするファイル名を格納します。
  2. Forループで、配列の各要素に対してFileCopyステートメントを実行します。
  3. コードを実行すると、指定した複数のファイルが一括でコピーされます。

VBAでファイルをコピーする際のFAQ

Q:FileCopyステートメントでエラーが出る場合、どうすればいいですか?

A:まず、エラーメッセージを確認してください。エラーが「ファイルが見つかりません」というものであれば、コピー元のファイルパスが正確かどうか確認してください。また、コピー先のフォルダが存在するかも確認が必要です。エラーが解消しない場合は、VBAエディタでデバッグを行い、問題の箇所を特定してください。

Q:FileCopyでコピー先に同名のファイルがある場合、どうなりますか?

A:FileCopyステートメントは、コピー先に同名のファイルが存在する場合、そのファイルを上書きします。上書きを避けたい場合は、Dir関数を用いて事前に確認する必要があります。

Q:FileCopyでフォルダごとコピーは可能ですか?

A:FileCopyステートメントはファイルのコピーのみに使用され、フォルダごとコピーする機能はありません。フォルダごとコピーする場合は、FileSystemObjectを使用する方法があります。

Q:FileCopyはネットワークドライブにも対応していますか?

A:はい、FileCopyステートメントはネットワークドライブにも対応しています。ただし、ネットワークの接続状態やアクセス権限によっては、エラーが発生する可能性があります。

Q:FileCopyで大量のファイルをコピーする際のパフォーマンスは?

A:FileCopyステートメントは一般的に高速ですが、大量のファイルをコピーする場合は時間がかかる可能性があります。そのような場合は、Forループなどを用いて、進捗状況を表示するようにするとよいでしょう。

Q:FileCopyでコピーが完了したかどうかを確認する方法は?

A:FileCopyステートメントは、コピーが成功した場合でも特に通知はありません。コピーが完了したかどうかを確認するには、Dir関数を用いてコピー先にファイルが存在するか確認する方法があります。

Q:FileCopyで特定の拡張子のファイルだけをコピーすることはできますか?

A:FileCopyステートメント自体にはそのような機能はありませんが、Dir関数と組み合わせることで、特定の拡張子のファイルだけをコピーすることは可能です。

Q:FileCopyでコピー先のファイル名を動的に生成することはできますか?

A:はい、VBAの文字列操作関数を用いて、コピー先のファイル名を動的に生成することができます。例えば、現在の日付や時間をファイル名に含めることが可能です。

関連動画

まとめ

この記事で、VBAを用いてファイルをコピーする基本的な方法から応用テクニックまでを学びました。特に、上書きの際の確認方法や、同じフォルダ内でのファイル複製方法など、日常業務で役立つテクニックを多数紹介しました。この知識を活かして、効率的なファイル操作を行いましょう。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次