📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルをバックグラウンドで転記する方法

毎日大量のファイルを手動で処理するのは大変です。この記事では、指定したフォルダ内の全てのファイルを自動的にバックグラウンドで転記する方法を紹介します。これにより業務効率が大幅に向上します。

サンプルコード

VBA
Option Explicit
Sub CopyAllFilesInFolder()
    Dim fso As Object, folder As Object, file As Object
    Dim wb As Workbook
    Dim sourcePath As String, targetPath As String
    
    ' バックグラウンド処理のため画面更新を停止
    Application.ScreenUpdating = False
    
    ' 対象フォルダと転記先フォルダを指定
    sourcePath = "C:\SourceFolder"  ' 変更が必要な場合、適切なパスに変更してください。
    targetPath = "C:\TargetFolder"  ' 同上
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(sourcePath)
    
    For Each file In folder.Files
        If Right(file.Name, 4) = ".xls" Or Right(file.Name, 5) = ".xlsx" Then
            ' ファイルを開く
            Set wb = Workbooks.Open(file.Path)
            ' 転記先パスを設定
            wb.SaveAs targetPath & "\" & file.Name
            ' ファイルを閉じる
            wb.Close False
        End If
    Next file
    
    ' 画面更新を再開
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。また、ファイル形式が対応しているかどうか確認してください。