【VBA】仕事が爆速に!開いているExcel全ファイルを一括処理する方法

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

ふとデスクトップに目を向けると、画面の下にExcelのアイコンがずらーっと並んでいる……。そんな光景を見ただけで、「はぁ……」とため息をついてしまうことはありませんか?

  • 「この10個のファイル、全部開いて中身を確認しなきゃ」
  • 「全部のファイルから売上データだけコピーしてまとめなきゃ」

こうした作業は、単純でありながら非常に神経を使うものです。ミスは許されないけれど、数は膨大。

そんなストレスフルな状況を打破するのが、今回ご紹介するVBAのテクニックです。

【業務効率化】VBAの記事を見る

「開いているブックをループする」とは?仕組みをイメージで理解しよう

今回は、VBAを使って「開いている全てのブック(ファイル)を順番に処理する」方法をお伝えします。

「開いているブックをループする」と言われても、最初はピンとこないかもしれません。 そこで、あなたの机の上に、確認が必要な書類の束(=開いているExcelファイルたち)があると想像してみてください。

手作業でこれを行う場合、以下のような動きになりますよね。

  1. 1枚目の書類を取る
  2. 内容をチェックする
  3. 机の横に置く
  4. 2枚目の書類を取る……(以下、最後まで繰り返し)

これをVBA(マクロ)に指示すると、こうなります。 「そこにある書類を、端から順番に全部チェックしておいて」

これだけです。

これをプログラミングの世界では「コレクションのループ処理(For Each)」と呼びます。

コピペで即戦力!全ブック名を取得するサンプルコード

では、実際にコードを見てみましょう。

 今回は最もシンプルで分かりやすい例として、「今開いている全てのExcelファイル名を、セルに書き出す」というコードを用意しました。

このマクロを実行すれば、たとえ10個、20個のファイルが開いていても、1秒かからずにリストアップが完了します。

以下のコードを標準モジュールにコピペしてみてください。

Sub 開いている全てのブック名を取得する()
    Dim wb As Workbook
    Dim i As Long
   
    ' 書き出し位置の初期設定(A1セルからスタート)
    i = 1
    ' 開いている全てのブックに対して繰り返し処理を行う
    For Each wb In Workbooks
        'マクロを実行している自分自身のファイルは除外する
        If wb.Name <> ThisWorkbook.Name Then
            ' A列にブックの名前を書き出す
            Cells(i, 1).Value = wb.Name
            ' 次の行へ移動
            i = i + 1
        End If
    Next wb
   
    MsgBox "全てのブックを確認しました!"
End Sub

コード解説

このコードの主役は、以下の3行です。

For Each wb In Workbooks
    ' ここに実行したい処理を書く
Next wb

  • Workbooks: 今Excelで開いている「すべてのファイル」の集まり(コレクション)です。
  • wb: 1つひとつのファイルを取り出して入れておくための「一時的な箱」です。
  • For Each: 「集まりの中から1つ取り出して箱に入れ、中身の処理が終わったら次へ。全部終わるまで繰り返して!」という命令です。

トランプの山(Workbooks)から、1枚ずつカード(wb)をめくって確認していく様子をイメージすると分かりやすいでしょう。

運用上のコツ:自分自身を除外する理由

コードの中に If wb.Name <> ThisWorkbook.Name Then という一文を入れました。

これは「今このマクロが書かれているファイル自身は、処理の対象から外す」という重要な設定です。

集計用のファイル(マクロ本体)まで集計対象に含めてしまうと、データが重複したり、思わぬエラーの原因になったりすることがあります。この一文を入れておくだけで、マクロの安定性がグッと高まります。

ぜひ、日々の業務に役立ててみてください!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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