非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【VBA】Dir関数でワイルドカードで複数ファイルを検索

   

VBAでファイル検索をする際にDir関数を使います。…が、「id001_*.txt」のようにワイルドカードを使う場合には最初にヒットしたファイルしか返ってこないため、該当するファイルが複数あった場合はすべて探してはくれません。

例えば以下のようなファイル群があり、fname = Dir("id001_*.txt")としてもfname変数には「id001_0001.txt」しか返ってこないわけです。

 

こちらがソースコードです。メッセージボックスには1つのファイル名しか表示されません。では、どのようにすれば複数のファイルを捕まえることができるのでしょうか。

pname = "C:\Users\...\"
fname = Dir(pname & "id001_*.txt")
MsgBox fname
 

 

 

Dir関数は連続して検索をすると次のファイルを探してくれるという特徴があるので、その特徴を利用してfnameに空白が入るまで繰り返せばOKです。以下がそのソースコード例です。

pname = "C:\Users\...\"   
fname = Dir(pname & "id001_*.txt")
Do While fname <> ""
  MsgBox fname
  fname = Dir()
Loop

 

スポンサーリンク

 - Excel, VBA