質問: Excel VBAにてネットワーク上のファイル一覧を高速に取得する方法 ローカル環境とは異なり、一般にネットワーク上のファイル情報の一覧を取得するのには時間がかかります。
回答: > ・ネットワークドライブ上のファイル情報(ファイル名、サイズ、更新日、更新時刻)を取得 > ・取得した一覧は同ブックのセル内に書き出す ちょっとこの間にたような内容で対応しましたが、前者のファイル情報を取得するところとネットワークの帯域がボトルネックになりました。 それでも ・C#を使ったコンソールプログラムにする ・ディレクトリ、ファイルはまとめて取得 (やり方はいくつかある) ・でSystem.IO.FileInfoクラスを使ってファイル情報を取得 したほうがまだましという感じでした。 VBAでWSHでコマンドの標準出力を取得してまとめて貼り付けがメモリに収まるなら検討できるかも。 Filesystemobjectの場合は試したところではどうしても再帰処理にする必要があるようです。 その際 ・Filesystemojectはメイン処理側で作成し参照 ・GetFolderとSubfolders,Filesの組合せでファイル名取得 ネットワークの帯域は環境依存でどうにもならず。 あとは一般的なVBAのパフォーマンス対策 ・余計な画面更新、再計算をしない (ただ、そのままだと処理中Excelが「応答しない」になるのでどうするかはある) ・ファイル情報を取得したたびにセルへの代入はしない。まとめて配列をシートにセット。 (動的配列にしてRedimで拡張したほうがまし) という感じでしたね。 全体百数十GBで専用回線でも数時間かかりました。ネットワーク経由の場合全ファイルのファイル情報(サイズ、作成日時、更新日時)を取得しようとすると数MB/secしか出ない。 他にもっといいやり方があるのかもしれませんが。