VBATips

フォルダ内のファイルを、別フォルダへ一括コピペするマクロ【ExcelVBA】

フォルダ内のファイルを、別フォルダへ一括コピーする

毎日成果物として提出をしないといけない場合に、
日々の作業フォルダ→成果物フォルダへファイルを移行するケースがあります。

このような毎日行う作業は、下記のようなヒューマンエラーが起きやすいです。

・作業フォルダから作業するエクセルファイルが消えてしまった。
・コピペしたはずが、成果物フォルダで作業してしまい、バックアップから復元が必要となった。

特に今回のようなコピペをするだけといった、簡単なルーティン作業はミスが起きます。
そういった初歩的なミスを防ぐためにも、マクロで一括処理します。

サンプルコード

’■フォルダ内のファイルを全て、別フォルダにコピーペーストする
Sub call_folder_all_file_copy_paste()
    
    Dim Path As String
    Dim CopyPath As String
    Dim FName As String
    
    '■ファイル名取得するディレクトリ、コピペするディレクトリを入れる
    Path = "C:\Sample\"
    CopyPath = "C:\Sample\Delivery\"
    
    
    FName = Dir(Path & "*.xlsx")  'ワイルドカード(*)を使用し、xlsx拡張子のファイルを全て
        
    '■Loopでファイルを取得→ファイルを別フォルダにコピー
    Do While FName <> ""
       FileCopy Path & FName, CopyPath & FName
       FName = Dir()
    Loop
End Sub
フォルダ内の全てのファイルを別フォルダにコピペしています。(sampleフォルダ→Deliveryフォルダへ)
今回は、下記の記事の応用編です。
Dir関数についてはこちらを参照。
フォルダ内のファイル一覧を抜き出したい場合はこちらを参照。

注意点

  • 今回のコードは元ファイルを残したコピペであり、移動ではありません。
    フォルダ内のファイルを移動やリネームしたい場合はこちらの記事を参照
  • ファイル名を変更して保存したい場合は、下記コードを参考にして、処理を加えてください。
    同一モジュール内に下記のパーツ化したコードを入れておいてください。

コメント

  1. すみません、
    実行エラー53 ファイルが見つかりせん。
    が出ます。
    コピー元とコピー先のパスは間違いないはずなのですが、FileCopy Path & FName, CopyPath & FNameのところでエラーが出ます。

    一つ一つ動作させながら確認しておりましたが、コピー元とコピー先のパスとファイル名は取得されてます。

    • パスとファイルの間に¥マークがないのではと推測します。
      これで解決しなければお問い合わせから連絡頂ければ有償500円にて対応致します。

タイトルとURLをコピーしました