★ 処理速度が2倍速くなる?~『 いちいちExcelファイルをOpenせずに 』、指定したフォルダ内の、すべてのサブフォルダを延々と掘っていって、『 すべてのExcelファイルのとその中身のすべてのシート名 』を、「ADO」にてアクティブシートにゲットする(吸い込む)プログラム。(再帰的な処理)
  

バージョン2021で作りました。

以降に挙げたプログラムを標準モジュールに単純にALLコピペして、
「GetFolderAndFileListMain02」のほうだけを実行します。
(※バージョン2000の場合はエラーになります。2003か2007以降なら動くかも?テストしてません。2013以降は動くと思います。)

『 いちいちExcelファイルをOpenせずに 』、Excelファイルのすべてのシート名をゲットしますので、Openメソッドを使う方法よりも多少なりとも速いようです。
1.5~2倍くらいは速いみたいです。

ただ、数百、数千のファイルを読み込んだ時、メモリがらみのエラーになるかどうかなどはテストしていません。
また、シート名をゲットする程度か、もしくは、ADO+SQLでなんとかなるレベルの書き換えや転記などでしか使えません。細かすぎる動きをさせたい場合は、Openメソッドを使うしかありません。
あと、パスワードがかかっているExcelファイル等々はスキップしてしまい、シートを調べることはできません。

なお、Openメソッドを使うコードとの動作速度の比較には、以下のWebページのベストアンサーのコードを使ってみてください。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10271440685
(「mpath = Range("B1").Value」を、「mpath = "d:\1"」など、
 実際の目的のフォルダパスに変更が必要です。あと、r=3をr=1などにも。
 一応、最下に、アクティブシートに書き出すように変えたモノがあります。)

ただし、実際のシートの並び順通りにシート名をゲットしたい場合は、遅くなっても仕方ないので、上記のURLのように、Openメソッドを使ったほうがいいようです。
本記事の方法だと、シート名が先頭文字の文字コード順に並ぶっぽいです。

ちなみにですが、上記のURLのコードだと、パスワード付きのファイル等々で、以下のようなエラーやメッセージが出ます。

(01)「××××××××××××××××××××××××.xlsxのリンク(.link拡張子)」のファイルでエラーが出て止まってします。(デバッグモードでVBEが立ち上がる場合があり。)
(02)「開いただけで勝手に内容変更がされて閉じるときに上書き保存ダイアログが出るファイル」がある。
(03)パスワードがかかっているファイルはパスワードを入力しないといけない。

など。ほかにもあるかも?

また、自分は初心者なので、シート名のゲットやらなんやらが完璧ではない可能性があります。
その際は、ご自分でも色々と試して書き換えてください。
  

※対象はファイルのみ、で、フォルダに対しての情報は得ないものとします。
あと、Dir関数は細かく作り替えたい時にトラブルのもととなりますので、「ループ目的」としては使っていません。(サンプル程度で架空のプログラムならまだしも)

あと、コメント、大幅に削りました。
エラー処理も、On Error Resume Next でごまかすのをやめて、
いちおう、On Error Goto でやりました。
(結局、設計的に正しいやり方だったのかどうかはわかりませんけど・・・)

  

上記のコードを作るもとになったコード。
「GetFolderAndFileListSub()」にて、エラー処理をOn Error Resume Nextでごまかしていますので、あんまりいいコードではありません。

「GetFolderAndFileListMain02()」プロシージャだけを実行するのは同じです。

  
  

前項のコードのコメントほぼ無しバージョン。
「GetFolderAndFileListMain02()」プロシージャだけを実行するのは同じです。

これも「GetFolderAndFileListSub()」にて、エラー処理をOn Error Resume Nextでごまかしていますので、あんまりいいコードではありません。

  

OpenメソッドでいちいちExcelファイルを開いて処理した場合の例。
「Application.ScreenUpdating = False」を使っているのに、1.5~2倍くらい、遅いです。

ただ、シートの並びが「まんま」で出てくるのでわかりやすいです。
そのほうがいい場合は速度よりもこちらを選びます。

ただし、このコードはループ処理にDir関数を使っていて、
むやみに使うとトラブルを生む可能性がありますので、
実務にはDir関数を使わない他のサンプルコードを探すほうが
面倒に巻き込まれなくていいです。