解決済みの質問
ちょっと前にやったことがあるので参考になれば・・・。
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
3人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
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
OKWaveのオススメ
おすすめリンク