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

解決済みの質問

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

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

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

投稿日時 - 2001-05-21 23:16:43

QNo.79189

すぐに回答ほしいです

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

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

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

投稿日時 - 2001-05-22 09:41:10

ANo.2

3人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.1

ARC

http://www.okweb.ne.jp/kotaeru.php3?q=38626
の回答を参考にしてやって下さい。

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

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

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

投稿日時 - 2001-05-22 00:26:07

あわせてチェックしたい
  • FileSystemObject & For Eachループで・・・ ...
  • サブフォルダ内のフォルダ名取得 ...
  • VBS サブフォルダの再帰処理について ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら