• ベストアンサー

全サブフォルダのファイルの取得

VB6のFileSystemObjectを使って、サブフォルダの中のファイルを取得したいのです。 For Each ~ Next 文などをつかっていろいろやっているのですが、どうしてもサブフォルダ以降のサブサブフォルダから下が取得できません。 誰か教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom777
  • ベストアンサー率77% (14/18)
回答No.2

ちょっと前にやったことがあるので参考になれば・・・。 Private Sub GetFileCollection(ByRef sDirName As String, ByRef sFileCol As Collection)   Dim FSysObj As Scripting.FileSystemObject   Dim aFolder As Scripting.Folder   Dim ChildFolder As Scripting.Folder   Dim aFile As Scripting.File   Dim i As Long   On Error GoTo EXCEPTION_SECTION   Set FSysObj = New Scripting.FileSystemObject   Set aFolder = FSysObj.GetFolder(sDirName)   If (aFolder.Attributes And System) = System Then     Exit Sub   End If   For Each aFile In aFolder.Files     sFileCol.Add aFile.Path   Next aFile   If aFolder.SubFolders.Count > 0 Then     For Each ChildFolder In aFolder.SubFolders       Call GetFileCollection(ChildFolder.Path, sFileCol)     Next ChildFolder   End If   Exit Sub EXCEPTION_SECTION:   MsgBox "[" & Err.Number & "]" & Err.Description, vbExclamation + vbOKOnly, "エラー"   Exit Sub End Sub

その他の回答 (1)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

http://www.okweb.ne.jp/kotaeru.php3?q=38626 の回答を参考にしてやって下さい。 「再帰」っていうのを使えば、結構簡単に取得できます。 先のアルゴリズムを簡略化して書くと、 1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。 2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。 3:見つかったフォルダを引数にして自分自身を呼び出す。 のようになっています。「なぜこれでうまく行くのか」はちょっと説明しづらいですが、とにかくこれでうまく動くはずです。(動かなかったら補足してください。)

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=38626

関連するQ&A