# 23/11/10 12:39:46 に投稿(投稿者: simple )しましたが、一部修正して再度アップしました。
納得いきませんか?どのあたりか、更に追記してください。
Dir関数というのは、予めVBAに装備されている関数で、
その中身のコードはユーザーからは見ることができないので少し面倒ですよね。
ヘルプ等をよく読むしかないでしょうか。
(1)
f = Dir("D:\test\abc.xlsx") とすると、
"D:\test\abc.xlsx"というファイルがあれば"abc.xlsx"を返し、
なければ、""を返します。
したがって、ファイルが実際にあるかどうかを確認することができます。
これが一つの使い方です。
(2)
またワイルドカード(*や?など)を使うことによって、特定のパターンのファイルがあるかどうかを
探すこともできます。
(3)
よく使われるのは、特定のフォルダ傘下のファイルを列挙する、という使い方です。
今回の質問はこれに関連したものですね。
Sub test()
Dim f As String
f = Dir("D:\test\*.xlsx") '@
Do While f <> ""
Debug.Print f
f = Dir() 'A
Loop
End Sub
@の Dir("D:\test\*.xlsx") とすると、"D:\test"フォルダに"xlsx"ファイルがあれば、
最初に該当した、例えば、"aaa.xlsx"と言う文字列を返します。
Aでは、Dir関数の引数("ひきすう"と読みます)が何もないので、以下の動作になります。
・直前に実行した同じ命令("D:\test"フォルダに"xlsx"ファイルを探す)を再実行します。
これは、VBA側が仕様をそのように決めているのです。
・同一の検索の続きを行い、一つ目以外にもあれば、それを取得します。
・つまり、Dir関数の実行の経緯を覚えていて、実行して得られたファイル以外に、
該当するファイルがあれば、そのファイル名(例: "aaa2.xlsx")を返すのです。
・こうした作業を Do Loopの中で繰り返します。
もうこれ以上該当するものがなくなれば、
f = Dir() を実行した結果、f は ""となり、Do Loopから脱出します。
このように、Dir関数を使いまわすことで、特定のパターンのファイル名を列挙できるのです。
# 折角質問されたのですから、短くても結構なので、なにか返事をされるとよいですよ。