
ExcelVBA ワイルドカード (`*`, `?`) を使うことで、特定の条件に一致するファイルを簡単に検索し、処理できます。 手作業でファイル名を確認せずに、一括処理が可能になります。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|流れ
1.特定のパターンに一致するExcelファイルを開く
2.フォルダ内の複数ファイルを検索・処理
3.日付や特定の文字が含まれるファイルを操作
4.ファイル一覧を取得してリストにする
Dir関数でワイルドカードを使ってファイルを検索する
| 記号 | 例 | 説明 |
| * | データ*.xlsx | 「データ」で始まり、「.xlsx」で終わる」すべてのファイル |
| ? | データ?.xlsx | データ」の後に1文字がついたファイル (`データ1.xlsx`, データA.xlsx など) |
【サンプルコード】特定条件に一致するファイルの一覧取得&一括処理
標準モジュール
- Option Explicit
- Sub ワイルドカードでExcelファイルを開く()
- Dim ファイル名 As String
- Dim フォルダパス As String
- ' 検索するフォルダを指定
- フォルダパス = "C:\Users\User\Desktop\データ\"
- ' ワイルドカードを使用してファイルを検索
- ファイル名 = Dir(フォルダパス & "*.xlsx")
- ' ファイルが見つかる限りループ
- Do While ファイル名 <> ""
- Workbooks.Open フォルダパス & ファイル名
- ファイル名 = Dir() ' 次のファイルを取得
- Loop
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
・Dir(フォルダパス & "*.xlsx") で 特定の拡張子のファイルを検索
・Do While ファイル名 <> "" で 全ファイルを開く
・Dir() を繰り返し呼び出すことで 次のファイルを取得
フォルダ内の「データ」で始まるファイルをリスト化
標準モジュール
- Option Explicit
- Sub 指定した名前のファイルをリスト化()
- Dim ws As Worksheet
- Dim ファイル名 As String
- Dim フォルダパス As String
- Dim i As Integer
- ' シートを指定(結果を出力する場所)
- Set ws = ThisWorkbook.Sheets(1)
- ' 検索するフォルダ
- フォルダパス = "C:\Users\User\Desktop\データ\"
- ' ワイルドカードでファイル名を検索
- ファイル名 = Dir(フォルダパス & "*.xlsx")
- ' 行番号を初期化
- i = 1
- ' すべての一致するファイルをリストに追加
- Do While ファイル名 <> ""
- ws.Cells(i, 1).Value = ファイル名
- i = i + 1
- ファイル名 = Dir()
- Loop
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
・ Sheets(1) の A列に一致するファイルをリスト表示
・ データ*.xlsx を指定することで 「データ」で始まるファイルのみ取得
・ i = i + 1 で 次の行に書き込む
最新の日付のファイルを開く
標準モジュール
- Option Explicit
- Sub 最新ファイルを開く()
- Dim ファイル名 As String
- Dim フォルダパス As String
- Dim 最新ファイル As String
- Dim 最新日付 As Date
- ' フォルダパスを指定
- フォルダパス = "C:\Users\User\Desktop\データ\"
- ' 初期化
- 最新日付 = #1/1/1900# ' 過去の日付を初期値に設定
- 最新ファイル = ""
- ' ワイルドカードを使ってファイル検索
- ファイル名 = Dir(フォルダパス & "*.xlsx")
- ' すべてのファイルをチェック
- Do While ファイル名 <> ""
- ' 更新日時を取得
- If FileDateTime(フォルダパス & ファイル名) > 最新日付 Then
- 最新日付 = FileDateTime(フォルダパス & ファイル名)
- 最新ファイル = ファイル名
- End If
- ファイル名 = Dir()
- Loop
- ' 最新ファイルを開く
- If 最新ファイル <> "" Then
- Workbooks.Open フォルダパス & 最新ファイル
- MsgBox "最新のファイル: " & 最新ファイル
- Else
- MsgBox "該当するファイルがありません。"
- End If
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
・FileDateTime(フォルダパス & ファイル名) で ファイルの更新日時を取得
・最も新しいファイルのみ開く
ワイルドカード検索を使う際の注意点
1. ワイルドカードは Dir()` でのみ使用可能
Workbooks.Open "C:\データ\*.xlsx"
→ Dir() を使ってファイルを取得し、 Workbooks.Open に渡す
2. ファイルが見つからない場合の処理
・ Dir() が `""` を返した場合は ファイルが存在しない
・ If ファイル名 = "" Then MsgBox "ファイルがありません" でエラーハンドリング
3. フォルダの指定ミス
・フォルダパス の 最後に必ず `\` をつける
・フォルダパス & "*.xlsx" のように結合する
VBAワイルドカード検索のまとめ
| 方法 | コード例 | 特徴 |
| 特定の拡張子のファイルを開く | Dir(フォルダ & "*.xlsx") | フォルダ内の全Excelファイルを開く |
| ファイルをリスト化 | Dir(フォルダ & "データ*.xlsx") | 特定の名前で始まるファイルをリスト化 |
| 最新のファイルを開く | FileDateTime(ファイル) | 最終更新日が最新のファイルを開く |
| 特定の日付のファイルを開く | Dir(フォルダ & "データ_YYYY・MM・DD.xlsx") | 日付入りファイルを開く |
ワイルドカードを活用し、効率的にファイルを処理しましょう。
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。
