VBAでフォルダ内を検索する方法について紹介します。
実際に作ったファイルはこちらから無料でダウンロードできます。
エクセルの仕様
仕様は、記載したパスから文字列で前方後方一致で検索します。
該当したファイルをE列に記載します。
使い方
- 検索するパスと、文字列を記載
- 検索ボタンをクリック
- E列に該当したファイルが書き出しされる
マクロが無効にされる場合
ダウンロードすると、以下のような警告が表示されることがあります。
ファイルを右クリックして、プロパティから「許可する」にチェックを入れて下さい。
コードの解説
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
'============================== '目的 :フォルダからファイルを検索して、セルに書き込む '============================== Sub SearchFiles_Click() Dim FileName As String '検索するファイル名 Dim SearchText As String '検索するファイル名 Dim SearchPath As String '検索するフォルダpath Dim Cnt As Long 'カウント用変数 Dim Files() As String 'ファイルパス格納用配列 '------------初期化処理------------ 'ファイルパスの書き込みエリアをクリアする ThisWorkbook.Sheets("Sheet1").Columns("E").ClearContents ThisWorkbook.Sheets("Sheet1").Range("E4") = "該当ファイル一覧" SearchPath = ThisWorkbook.Sheets("Sheet1").Range("検索パス") SearchText = ThisWorkbook.Sheets("Sheet1").Range("検索文字") '------------検索結果をセルに書き込む------------ 'ファイルを検索 FileName = Dir(SearchPath & "\*" & SearchText & "*") Do While FileName <> "" 'E1セルから順番にファイルパスを記述する ThisWorkbook.Sheets("Sheet1").Range("E" & Cnt + 5) = FileName Cnt = Cnt + 1 ' 次のファイル名を参照 FileName = Dir() Loop MsgBox "検索が完了しました。" End Sub |
解説
13行目の「初期化処理」で前回出力した内容をクリアしています。
19、20行目でエクセル内でセットした検索フォルダと、文字列をセットしています。
24行目で該当するファイルの一覧を検索して、FileNameに取得しています。
26~34行目でファイルの一覧を最後までE列に書き込んでいます。