| 
    
     |  | ▼ON さん: 
 >最初のコードで希望の操作かないました。
 
 >そのうち、修正コードを頂いたので
 >試してみたのですが、初回は別にしても
 >次回以降は
 >当初コード
 > 532ミリ秒
 > 610ミリ秒
 >高速化コード
 > 985ミリ秒
 > 984ミリ秒
 >となり、
 
 いやー、申し訳ない。完全にぼくの <早とちり> でした。
 
 > fDATA.dwFileAttributes = fATTR_DIRECTORY
 
 で、DIRECTORY属性だけ与えておけば、フォルダだけ列挙できるかと早合点
 してました。
 実際は、こうしても、すべてのファイルがヒットしてしまうんですね Orz
 
 Office TANAKA - Excel VBA(Dir関数でサブフォルダを取得する)
 h t t p://officetanaka.net/excel/vba/tips/tips95.htm
 にもあるように、
 
 Dir関数の 第二引数ファイル属性は
 
 定数     値  内容
 vbNormal  0   標準ファイル
 vbReadOnly 1   読み取り専用ファイル
 vbHidden  2   隠しファイル
 vbSystem  4   システムファイル(Macintoshでは使用できません)
 vbVolume  8   ボリュームラベル(Macintoshでは使用できません)
 vbDirectory 16  フォルダ
 vbAlias   64  エイリアスファイル(Macintoshでのみ使用できます)
 
 と、定数「標準ファイル」の値が 0 なので、フォルダだけの検索ができない。
 しかし、
 
 FildFirstFileのFILE_ATTRIBUTEは、
 
 Const FILE_ATTRIBUTE_ARCHIVE = &H20
 Const FILE_ATTRIBUTE_DIRECTORY = &H10
 Const FILE_ATTRIBUTE_HIDDEN = &H2
 Const FILE_ATTRIBUTE_NORMAL = &H80
 Const FILE_ATTRIBUTE_READONLY = &H1
 Const FILE_ATTRIBUTE_SYSTEM = &H4
 Const FILE_ATTRIBUTE_TEMPORARY = &H100
 
 とあるように、Normalが &h80 で 0 でないので、
 > FILE_ATTRIBUTE_DIRECTORY = &H10
 だけを指定すれば、フォルダだけ検索できるかと思いこんでいました。
 
 同じようなAPI関数に、
 FindFirstFileEx というのがあるので、ひょっとしたら、これだと
 属性でフィルタかけて検索できるのかな? と思ったりしたのですが、
 これについての説明が Web にはあまり転がっていないようで、
 トライできてません。
 
 どなたか、
 「サブフォルダだけの検索」ができるAPIをご存じありませんか?
 
 いずれにしても、「高速版」は 2重に検索してるから、
 最初のバージョンよりずっと「低速」です。
 ごめんなさい。
 
 
 |  |