【コピペでOK】フォルダ内の全エクセルに同じ処理を実行!VBAで複数ファイルを一括処理する方法!

コピペで使えるコード集

何十枚もあるエクセルの日付更新に手間がかかる…
フォルダ内のすべてのエクセルに同じ処理をする方法を知りたい!

たくさんのエクセルをいちいち開いて、同じ内容を入力するような作業って、時間的にもメンタル的にもつらいですよね。10個、20個とエクセルがあると、開いて閉じてを繰り返すだけの単純作業は、こなすだけで気がめいってしまいます。

そこで今回は、指定したフォルダ内にある「すべてのエクセルファイル」に対して、特定のセルへ一括で同じ内容を転記(入力)するVBAコードを紹介します。

「どのフォルダの」「どのセルに」「何を入れるか」をエクセルのシート上で直接指示できるVBAになっているので、ぜひ使い方も含めて確認してみてください!

【コピペOK】VBAで複数ファイルを一括処理するコード

まずは、今回使用するVBAコードを紹介します。以下のコードをコピーして使用してください。詳しい使い方や設定方法は、次の項目で順番に解説しています。

Sub UpdateAllExcelFilesInFolder()
    Dim wsMacro As Worksheet
    Dim folderPath As String
    Dim fileName As String
    Dim wbTarget As Workbook
    Dim wsTarget As Worksheet
    Dim rowIdx As Long

    ' このマクロが書かれているシートを変数にセット
    Set wsMacro = ThisWorkbook.ActiveSheet

    ' B1セルからフォルダのパスを取得
    folderPath = wsMacro.Range("B1").Value

    ' フォルダパスの最後に「\」がなければ付け足す
    If Right(folderPath, 1) <> "\" Then
        folderPath = folderPath & "\"
    End If

    ' フォルダ内の最初のエクセルファイルを探す
    fileName = Dir(folderPath & "*.xls*")

    ' 画面のちらつきを止めて処理を早くする
    Application.ScreenUpdating = False

    ' ファイルが見つかる限り処理を繰り返す
    Do While fileName <> ""

        ' エクセルファイルを開く
        Set wbTarget = Workbooks.Open(folderPath & fileName)
        ' 開いたファイルの1つ目のシートを対象にする
        Set wsTarget = wbTarget.Sheets(1)

        ' マクロシートの3行目から下に向かって順番に処理
        rowIdx = 3
        Do While wsMacro.Cells(rowIdx, 1).Value <> ""

            ' A列のセル番号へ、B列の記入内容を書き込む
            wsTarget.Range(wsMacro.Cells(rowIdx, 1).Value).Value = wsMacro.Cells(rowIdx, 2).Value

            ' 次の行へ進む
            rowIdx = rowIdx + 1
        Loop

        ' 上書き保存して閉じる
        wbTarget.Close SaveChanges:=True

        ' 次のファイルを探す
        fileName = Dir()
    Loop

    ' 画面の更新を元に戻す
    Application.ScreenUpdating = True

    MsgBox "すべてのファイルへの記入が完了しました!", vbInformation
End Sub

【番外】すぐ使えるエクセルファイル

VBAの設定に不安がある方や、フォーマットを作る時間すら惜しいという方向けに、VBAがすでに組み込まれた完成版のエクセルファイルを用意しました。ここにパスと転記内容を書き込むだけで、すぐに一括処理が実行できます。

エクセルファイルはNoteで販売しています。すぐに実務で使いたい方はこちらを活用してください。

▼ ツールダウンロードはこちら

【Excelツール】複数エクセルへの一括処理|すぐに使える完成版ダウンロード|犬井 | 効率化大全
何十枚もあるエクセルの日付や担当者名を入力するのが面倒… フォルダ内のすべてのエクセルに同じ処理を一括で実行したい! 実務の中で、毎月送られてくる複数の請求書やフォーマットファイルに対して、同じ内容を入力するルーチン作業を手作業で行っていま...

なお。Outlook操作やファイル整理など、今後追加されるツールもすべて使える「まとめ買いセット」も紹介しています。複数使う予定の方は、こちらも確認してみてください。

▼ 効率化ツール全セットはこちら

【DLで使える!】Excel・Outlookの「単純作業」自動化ツール|犬井 | 効率化大全
※2025/1/7にエクセルファイル/CSVの統合ツールを追加しました! 購入いただいた方は、追加ツールは追加費用なしでダウンロード可能です! Outlookで、宛先と添付ファイルだけを変えた似たようなメールの作成『202501_請求書』の...

一括処理VBAの動作と結果の紹介

このVBAがどのような動きをするのか、具体的なイメージを紹介します。今回は、以下の記事で紹介した、議事録の日付・題名・場所を自動入力する場合を例に解説します。

一括処理VBAの動作

今回は以下のような資料の作成日・議題・日時・場所を自動転記する場合の想定で処理を行います。

まず、マクロを実行するエクセルシートに、エクセルが入っているフォルダと入力したい場所、入力する内容を記載します。

※同時に処理を行いたいエクセルは、一つのフォルダにまとめてください

この状態で実行し、処理が終わると完了メッセージが表示されます。

指定したすべてのファイルの狙ったセルに対して、データが転記されます。

一括処理VBAの使い方について

それでは、ここからはエクセルへ実装する手順を解説します。

手順1:エクセルの準備(フォーマットの作成)

まずは、エクセルフォーマットを用意します。

セルA1に「対象フォルダ」、セルA2に「対象セル」、セルB2に「記入内容」と見出しを作ります。

こちらはvbaに直接機能しませんが、列ずれや書き間違い防止のため、この通りに入れるのをお勧めします。

次に、エクセルが入っているフォルダと、セルの場所、書きたい内容を書いていきます。

手順2:VBAコードの埋め込み(重要)

次に、先ほどコピーしたコードをエクセルに埋め込みます。

エクセルの「開発」タブから「Visual Basic」をクリックして、VBAエディタを開いてください。

「開発」タブを出す設定や、コードの基本的な書き方については、VBAの基礎まとめのページで詳しく解説しています。設定がまだの方は、こちらの記事もぜひ参考にしてみてください。

手順3:動作確認

あとは実行するだけですが、ここで一つ注意事項があります。

このマクロは、対象となるファイルを「自動で上書き保存」しながら進みます。そのため万が一、指定するセルを間違えていた場合、大切な元のデータを消してしまう可能性があります。

初めて実行する際は、必ず「テスト用のフォルダ」を作り、コピーしたダミーのファイルで動作確認を行ってください。

実行が完了すると以下のように、すべてのエクセルに記載された内容が一括で反映されます。

まとめ

今回は、VBAを使ってフォルダ内の複数エクセルファイルへ、一括で同じ処理(転記)を実行する方法を紹介しました。

このブログでは、このように様々な効率化に関する情報を発信していますので、ほかの記事も参考にして、業務の効率化を進めてみてください!

コメント

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