-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.79189
  • 閲覧数1465
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 37% (23/61)

VB6のFileSystemObjectを使って、サブフォルダの中のファイルを取得したいのです。

For Each ~ Next 文などをつかっていろいろやっているのですが、どうしてもサブフォルダ以降のサブサブフォルダから下が取得できません。
誰か教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル7

ベストアンサー率 77% (14/18)

ちょっと前にやったことがあるので参考になれば・・・。

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
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

http://www.okweb.ne.jp/kotaeru.php3?q=38626 の回答を参考にしてやって下さい。 「再帰」っていうのを使えば、結構簡単に取得できます。 先のアルゴリズムを簡略化して書くと、 1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。 2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。 3:見つかったフォルダを引数にして自分自身を呼び ...続きを読む
http://www.okweb.ne.jp/kotaeru.php3?q=38626
の回答を参考にしてやって下さい。

「再帰」っていうのを使えば、結構簡単に取得できます。
先のアルゴリズムを簡略化して書くと、
1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。
2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。
3:見つかったフォルダを引数にして自分自身を呼び出す。

のようになっています。「なぜこれでうまく行くのか」はちょっと説明しづらいですが、とにかくこれでうまく動くはずです。(動かなかったら補足してください。)


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ