Dir関数の落とし穴

Dir関数でvbDirectoryを指定した場合、当然ディレクトリだけが返却されることを期待しているのですが、これの仕様が不可解です。

カレントフォルダ=”.”
親フォルダ=”..”
フォルダ内フォルダ
さらにはファイルまで走査される模様
(属性でディレクトリであるどうかチェックが必要?)

vbNormalを指定した場合はファイルのみが返却されます。

Dir関数は最初の呼び出し時こそパスを指定しますが、2回目以降の呼び出しは引数なしに呼び出します。これは内部的にファイルの走査位置を記憶していることを意味しますが、これを100%信じると失敗します。特にDirをネストさせるのはNG?(要調査)

ファイルリストをDirで取得する場合は、取得したリストを配列なりコレクションなりに格納してしまうのが無難でしょう。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です