【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
スポンサーリンク