Access2000VBA・Excel2000VBA独学~フォルダの中に含まれる全てのファイルを(全てのサブフォルダの中も全部)再帰的に順に編集するサンプルプログラム~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
  
  
★ 参考サイト

[VBA]サブフォルダ含むファイル一覧を再帰的に取得する
サブフォルダを含めてファイル一覧を取得する(Dir関数の再帰呼び出し)
  
  

★ 重要な注意01

今回のような「すべてのサブフォルダのファイルに全部処理をする」みたいな処理をしたい場合方法は以下の(A)か(B)の2つの方法があります。

(A)「Dir()」を併用する方法
現在のディレクトリのファイル名の一覧取得や書き出し→Dir()を使ったループ
サブフォルダの全階層を覗きに行く→FSOを使ったループ

(B)「全部FSO」を使う方法   ※FSO=FileSystemObject=MSScriptingRuntime
現在のディレクトリのファイル名の一覧取得や書き出し→FSOを使ったループ
サブフォルダの全階層を覗きに行く→FSOを使ったループ

で、このとき、

(A)のDir()を併用する場合は、「さらにDir()で他のフォルダの存在チェックをしながら一覧ループでもDir()を使う」とエラーになったり、変な動きになったりします。
Dir()のループの途中に、その中でまたDir()してしまうと、その時点でそれまでのDir()の内容が書き換わってしまい、挙動がおかしくなるようです。

なので、
「すべてのサブフォルダをループする」中で、さらに、
「他のフォルダやファイルの存在チェックの分岐等々を入れたい」というときは・・・、

(01)Dir()を使わない。
(02)現在の階層のファイル一覧の書き出しも、他のフォルダやファイルの各種チェックも、再帰的ループも、「全部、FSOでやる」。
(03)もしDir()を使いたいなら、FSOのファイル名取得の再帰的ループの中で、「他の特定のファイルやフォルダの存在チェック」「だけ」に使う。

・・・としたほうが、エラーが出なくて無難かと思います。

Dir()を併用する方法でもエラーが出ないやり方があるかもしれませんが、もちろん、「全部FSOでやってしまう」のもラクだと思います。

逆に、

『 単純にファイル名を(サブフォルダも全部)一覧書き出ししたい場合 』、や、
『 さらに、他のフォルダやファイルの存在チェック等々を「全くしないで」、全サブフォルダへの再帰的ループをかけたい場合 』、等々は、

Dir()+FSOでOKです。

そういう形で、「サブフォルダのすべてのファイルのデータを何の条件も無しに1つのファイルにまとめたい」というようなときは、Dir()を併用しても一応はOKかと思います。

でも、将来的に『 さらに、他のフォルダやファイルの存在チェック等々を「する!」』ことを想定するなら、最初から全部、FSOでやってしまうほうがラクだと思います。

「サブフォルダのすべてのファイルのデータを1つのファイルにまとめたいけど、特定のファイル名のファイルは除外したい」とか、
「サブフォルダのすべてのファイルのデータを1つのファイルにまとめたいけど、処理済みのファイルを、指定の目的のフォルダが無かったらそれを作成し、そこへ入れたい」・・・、
などのケースが、将来的に想定される場合は、最初から全部、FSOだけを使ったほうが無難です。

  
  
★ 重要な注意02

この再帰的ループは、どちらかというと、「サブフォルダを全階層覗きに行くループ」中心に動くイメージです。
「現在のディレクトリのすべてのファイルを取得するループ」よりも。

なので、
「サブフォルダを全階層覗きに行くループ」のブロックの「前」の位置で、
「現在のディレクトリのすべてのファイルを取得するループ」を書くと、
ルートの全ファイルの取得→徐々に深い階層のフォルダ・ファイルの取得・・・と昇順なイメージで動きます。

逆に、
「サブフォルダを全階層覗きに行くループ」のブロックの「後ろ」の位置で、
「現在のディレクトリのすべてのファイルを取得するループ」を書くと、
最初のサブフォルダのもっとも深い階層のフォルダ・ファイルの取得→徐々にサブフォルダをさかのぼりつつファイル名を取得
→最後にルートの全ファイルの取得・・・と降順?なイメージで動きます。

これは、(B)の全部FSOでやる場合でも、(A)のDir()を併用する場合でも、どちらの場合でも同じです。

  
  
★ 一部にDir()を併用した、「サブフォルダも全部」、の、ファイル名の一覧書き出しの例((A)の「Dir()」を併用する方法)

  

★ 全部「FSO」を使った、「サブフォルダも全部」、の、ファイル名の一覧書き出しの例((B)「全部FSO」を使う方法)

  
  

★ なぜ、「一覧を書き出すループ」と「サブフォルダを覗きに行くループ」を順序を入れ替えると「さかのぼり」によって、降順のようなイメージでの書き出しになるのか?を少し考えるためのテストコード