- ベストアンサー
全サブフォルダのファイルの取得
VB6のFileSystemObjectを使って、サブフォルダの中のファイルを取得したいのです。 For Each ~ Next 文などをつかっていろいろやっているのですが、どうしてもサブフォルダ以降のサブサブフォルダから下が取得できません。 誰か教えてください。
- みんなの回答 (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)
http://www.okweb.ne.jp/kotaeru.php3?q=38626 の回答を参考にしてやって下さい。 「再帰」っていうのを使えば、結構簡単に取得できます。 先のアルゴリズムを簡略化して書くと、 1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。 2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。 3:見つかったフォルダを引数にして自分自身を呼び出す。 のようになっています。「なぜこれでうまく行くのか」はちょっと説明しづらいですが、とにかくこれでうまく動くはずです。(動かなかったら補足してください。)