【時短】VBAで複数ファイルを一気に選択!MultiSelectで業務を10倍速にする方法

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

はじめに:その「カチカチ作業」、指が疲れませんか?

「はぁ……。今月も各支店から届いた30個のExcelファイルを、1個ずつ開いてデータを集計しなきゃいけないのか。マウスをクリックしすぎて、もう指の関節が痛いよ……。一気に『これとこれ!』って選べたらいいのになぁ」

こんなふうに感じたことはありませんか?

かつての私もそうでした。プログラミングの知識が皆無だった頃、100以上のファイルを一つひとつ手作業で開いてはコピペを繰り返し、気づけば外は真っ暗。しかも、単調な作業の連続で集中力が切れて、コピペミスもしたことがあります。

でも、Excel VBAの「MultiSelect(マルチセレクト)」という機能を取り入れることで、その悩みは一瞬で解決します。今回は、複数のファイルを一気に選択し、スマートに処理するためのコードと運用のコツを解説します!

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

1. 複数ファイル選択(MultiSelect)とは?

ダイアログ」と聞くと難しそうですが、要はWindowsでよく見る「ファイルを開くときに出てくるあの画面」のことです。

通常、VBAでファイルを選択する設計にする場合、1つしか選べない仕様になっていることが一般的です。

この制限を解除し、「複数のファイル選択を許可する」という役割を担うのがAllowMultiSelect = Trueというコードです。

2. 【コピペで使える】複数ファイル選択の基本コード

まずは、難しい理屈抜きで以下のコードを標準モジュールに貼り付けてみてください。

Sub SelectMultipleFiles()
    ' 変数の宣言
    Dim fileDialogWindow As FileDialog
    Dim selectedFiles As Variant
    Dim i As Long

    ' 1. ファイル選択ダイアログを表示する準備
    Set fileDialogWindow = Application.FileDialog(msoFileDialogFilePicker)

    With fileDialogWindow
        ' 2. 複数選択を「許可」する(ここが一番重要!)
        .AllowMultiSelect = True
       
        ' 3. ダイアログのタイトルを決める
        .Title = "処理したいファイルをすべて選択してください"
       
        ' 4. フィルターを設定(Excelファイルだけを表示させる)
        .Filters.Clear
        .Filters.Add "Excelファイル", "*.xls*"

        ' 5. 「開く」ボタンが押されたかチェック
        If .Show = True Then
            ' 選択されたファイルの名前を順番にメッセージボックスで表示
            For Each selectedFiles In .SelectedItems
                MsgBox "選択されたファイル: " & selectedFiles
                ' 自動化したい内容に合わせて、ここに「ファイルを開いてデータをコピーする」などの処理を書きます

            Next selectedFiles
        Else
            MsgBox "キャンセルされました。"
        End If
    End With
   
    ' 後片付け
    Set fileDialogWindow = Nothing
End Sub

3. コードの重要ポイント解説

このコードの肝は、たった1行。.AllowMultiSelect = Trueです。

  • False(デフォルト): 普段通りファイルは1つしか選べません。
  • True: CtrlキーやShiftキーを押しながら、複数のファイルをガサッと選択できるようになります。

4. 私の失敗談

初めてこのコードを書いたとき、.Filters.Clear(フィルターの初期化)の記述を失念してしまったことがありました。

その結果、マクロを実行するたびファイル形式の選択肢に「Excelファイル」「Excelファイル」「Excelファイル」……と、選択できるファイル形式のリストがどんどん増えていき、最終的に画面が埋め尽くされました。

新しい設定を追加する前には、まず既存の状態をクリア(掃除)する」という原則は、日常生活の掃除だけでなく、プログラミングにおいても共通する鉄則だと感じました。

5. ステップアップ:実務で使うためのヒント

複数のファイルを選択した後は、それらのデータを「どのように実務に落とし込むか」が次のステップとなります。

  • データの集計: 選択した各ファイルを順次開き、特定のセルの値を自分のブックに転記する。
  • PDF化: 選択した複数のExcelファイルを、一括でPDFに変換して保存する。

これらの発展的な処理も、今回ご紹介したFor Eachという構文(繰り返し処理)の内部に具体的な操作コードを組み込むことで、簡単に実現可能です。

日々の業務を効率化するために、ぜひ試してみてください!

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


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

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

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

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

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

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

コメント

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