Excel VBAでワイルドカード検索|特定ファイルをDir関数で取得・一括処理する方法

 

ExcelVBA  ワイルドカード (`*`, `?`) を使うことで、特定の条件に一致するファイルを簡単に検索し、処理できます。 手作業でファイル名を確認せずに、一括処理が可能になります。 使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA ワイルドカードで特定条件に一致するファイルを検索|流れ

 

1.特定のパターンに一致するExcelファイルを開く

2.フォルダ内の複数ファイルを検索・処理

3.日付や特定の文字が含まれるファイルを操作

4.ファイル一覧を取得してリストにする

 

Dir関数でワイルドカードを使ってファイルを検索する

 

記号 説明
* データ*.xlsx 「データ」で始まり、「.xlsx」で終わる」すべてのファイル
? データ?.xlsx データ」の後に1文字がついたファイル (`データ1.xlsx`, データA.xlsx など)

 

【サンプルコード】特定条件に一致するファイルの一覧取得&一括処理

フォルダ内のすべての Excel ファイルを開く

標準モジュール

  1. Option Explicit
  2. Sub ワイルドカードでExcelファイルを開く()
  3.     Dim ファイル名 As String
  4.     Dim フォルダパス As String
  5.     
  6.     ' 検索するフォルダを指定
  7.     フォルダパス = "C:\Users\User\Desktop\データ\"
  8.     
  9.     ' ワイルドカードを使用してファイルを検索
  10.     ファイル名 = Dir(フォルダパス & "*.xlsx")
  11.     
  12.     ' ファイルが見つかる限りループ
  13.     Do While ファイル名 <> ""
  14.         Workbooks.Open フォルダパス & ファイル名
  15.         ファイル名 = Dir() ' 次のファイルを取得
  16.     Loop
  17. End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

ポイント

・Dir(フォルダパス & "*.xlsx") で 特定の拡張子のファイルを検索

・Do While ファイル名 <> "" で 全ファイルを開く

・Dir() を繰り返し呼び出すことで 次のファイルを取得

フォルダ内の「データ」で始まるファイルをリスト化

 

標準モジュール

  1. Option Explicit
  2. Sub 指定した名前のファイルをリスト化()
  3.     Dim ws As Worksheet
  4.     Dim ファイル名 As String
  5.     Dim フォルダパス As String
  6.     Dim i As Integer
  7.     
  8.     ' シートを指定(結果を出力する場所)
  9.     Set ws = ThisWorkbook.Sheets(1)
  10.     
  11.     ' 検索するフォルダ
  12.     フォルダパス = "C:\Users\User\Desktop\データ\"
  13.     
  14.     ' ワイルドカードでファイル名を検索
  15.     ファイル名 = Dir(フォルダパス & "*.xlsx")
  16.     
  17.     ' 行番号を初期化
  18.     i = 1
  19.     
  20.     ' すべての一致するファイルをリストに追加
  21.     Do While ファイル名 <> ""
  22.         ws.Cells(i, 1).Value = ファイル名
  23.         i = i + 1
  24.         ファイル名 = Dir()
  25.     Loop
  26. End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

ポイント

・ Sheets(1) の A列に一致するファイルをリスト表示

・ データ*.xlsx を指定することで 「データ」で始まるファイルのみ取得

・ i = i + 1 で 次の行に書き込む

最新の日付のファイルを開く

 

標準モジュール

  1. Option Explicit
  2. Sub 最新ファイルを開く()
  3.     Dim ファイル名 As String
  4.     Dim フォルダパス As String
  5.     Dim 最新ファイル As String
  6.     Dim 最新日付 As Date
  7.     
  8.     ' フォルダパスを指定
  9.     フォルダパス = "C:\Users\User\Desktop\データ\"
  10.     
  11.     ' 初期化
  12.     最新日付 = #1/1/1900# ' 過去の日付を初期値に設定
  13.     最新ファイル = ""
  14.     
  15.     ' ワイルドカードを使ってファイル検索
  16.     ファイル名 = Dir(フォルダパス & "*.xlsx")
  17.     
  18.     ' すべてのファイルをチェック
  19.     Do While ファイル名 <> ""
  20.         ' 更新日時を取得
  21.         If FileDateTime(フォルダパス & ファイル名) > 最新日付 Then
  22.             最新日付 = FileDateTime(フォルダパス & ファイル名)
  23.             最新ファイル = ファイル名
  24.         End If
  25.         ファイル名 = Dir()
  26.     Loop
  27.     
  28.     ' 最新ファイルを開く
  29.     If 最新ファイル <> "" Then
  30.         Workbooks.Open フォルダパス & 最新ファイル
  31.         MsgBox "最新のファイル: " & 最新ファイル
  32.     Else
  33.         MsgBox "該当するファイルがありません。"
  34.     End If
  35. End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

ポイント

・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") 日付入りファイルを開く

 

ワイルドカードを活用し、効率的にファイルを処理しましょう。

 

DIRの関連記事はここをクリックで一覧表示します

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問