はじめに:その「カチカチ作業」、指が疲れませんか?
「はぁ……。今月も各支店から届いた30個のExcelファイルを、1個ずつ開いてデータを集計しなきゃいけないのか。マウスをクリックしすぎて、もう指の関節が痛いよ……。一気に『これとこれ!』って選べたらいいのになぁ」
こんなふうに感じたことはありませんか?
かつての私もそうでした。プログラミングの知識が皆無だった頃、100以上のファイルを一つひとつ手作業で開いてはコピペを繰り返し、気づけば外は真っ暗。しかも、単調な作業の連続で集中力が切れて、コピペミスもしたことがあります。
でも、Excel VBAの「MultiSelect(マルチセレクト)」という機能を取り入れることで、その悩みは一瞬で解決します。今回は、複数のファイルを一気に選択し、スマートに処理するためのコードと運用のコツを解説します!
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を独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント