
ExcelVBA ワイルドカード (`*`, `?`) を使うことで、特定の条件に一致するファイルを簡単に検索し、処理できます。 手作業でファイル名を確認せずに、一括処理が可能になります。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|流れ
1.特定のパターンに一致するExcelファイルを開く
2.フォルダ内の複数ファイルを検索・処理
3.日付や特定の文字が含まれるファイルを操作
4.ファイル一覧を取得してリストにする
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|使い方
記号 | 例 | 説明 |
* | データ*.xlsx | 「データ」で始まり、「.xlsx」で終わる」すべてのファイル |
? | データ?.xlsx | データ」の後に1文字がついたファイル (`データ1.xlsx`, データA.xlsx など) |
Excel VBA ワイルドカードで特定条件に一致するファイルを検索|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
フォルダ内のすべての 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") | 日付入りファイルを開く |
ワイルドカードを活用し、効率的にファイルを処理しましょう。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。