VBA ファイル一覧について

f:id:gyokusen_since:20190626221718p:plain

FSOを使わないバージョンです。

 漸くファイル一覧のFSOを使わないバージョンが出来ました。

  • ノートパソコンだとデスクトップPCと比べて3倍以上遅いようです。
  • メインの元ネタは下記のブログ主の提供された関数からです。
  • www.excel-chunchun.com

  • この関数はFindFirstFileExW 関数で「フォルダのサイズ」以外はFSOのすべての情報を取得できます。単にあるフォルダ階層にあるすべてのファイルリストを列挙するだけなら25万件を3秒程度で取得します(PCの場合)
  • それだけではお話にならないのですべてのフォルダ、ファイルを取得しながらフォルダサイズも計算して該当行のフォルダサイズ欄にあとでマッチングを掛けてサイズ欄の値を入れ替えています。
  • ソートについては一旦コレクションに各アイテムを詰め込んでからサイズが明確になってから2次元配列に格納後、下記のサイトのマージソートを使ってソートを実行して再びコレクションにファイル情報を追加しています。
  • フォルダとファイルのような関係になっている場合にフォルダのサイズを計算するのがなかなかむつかしかった・・・

  • このあとエクスプローラのように直下の展開をしてる最中にバグがいろいろみつかった・・・