
ExcelVBA ワイルドカード (`*`, `?`) を使うことで、特定の条件に一致するファイルを簡単に検索し、処理できます。 手作業でファイル名を確認せずに、一括処理が可能になります。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
目次
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|流れ
1.特定のパターンに一致するExcelファイルを開く
2.フォルダ内の複数ファイルを検索・処理
3.日付や特定の文字が含まれるファイルを操作
4.ファイル一覧を取得してリストにする
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|使い方
記号 | 例 | 説明 |
* | データ*.xlsx | 「データ」で始まり、「.xlsx」で終わる」すべてのファイル |
? | データ?.xlsx | データ」の後に1文字がついたファイル (`データ1.xlsx`, データA.xlsx など) |
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|サンプルコード
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
フォルダ内のすべての Excel ファイルを開く
標準モジュール
Option Explicit
Sub ワイルドカードでExcelファイルを開く()
Dim ファイル名 As String
Dim フォルダパス As String
' 検索するフォルダを指定
フォルダパス = "C:\Users\User\Desktop\データ\"
' ワイルドカードを使用してファイルを検索
ファイル名 = Dir(フォルダパス & "*.xlsx")
' ファイルが見つかる限りループ
Do While ファイル名 <> ""
Workbooks.Open フォルダパス & ファイル名
ファイル名 = Dir() ' 次のファイルを取得
Loop
End Sub
・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
・ 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
・FileDateTime(フォルダパス & ファイル名) で ファイルの更新日時を取得
・最も新しいファイルのみ開く
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|注意点
1. ワイルドカードは Dir()` でのみ使用可能
Workbooks.Open "C:\データ\*.xlsx"
→ Dir() を使ってファイルを取得し、 Workbooks.Open に渡す
2. ファイルが見つからない場合の処理
・ Dir() が `""` を返した場合は ファイルが存在しない
・ If ファイル名 = "" Then MsgBox "ファイルがありません" でエラーハンドリング
3. フォルダの指定ミス
・フォルダパス の 最後に必ず `\` をつける
・フォルダパス & "*.xlsx" のように結合する
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|まとめ
方法 | コード例 | 特徴 |
特定の拡張子のファイルを開く | Dir(フォルダ & "*.xlsx") | フォルダ内の全Excelファイルを開く |
ファイルをリスト化 | Dir(フォルダ & "データ*.xlsx") | 特定の名前で始まるファイルをリスト化 |
最新のファイルを開く | FileDateTime(ファイル) | 最終更新日が最新のファイルを開く |
特定の日付のファイルを開く | Dir(フォルダ & "データ_YYYY・MM・DD.xlsx") | 日付入りファイルを開く |
ワイルドカードを活用し、効率的にファイルを処理しましょう。
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません