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
No.1
- 回答日時:
http://www.okweb.ne.jp/kotaeru.php3?q=38626
の回答を参考にしてやって下さい。
「再帰」っていうのを使えば、結構簡単に取得できます。
先のアルゴリズムを簡略化して書くと、
1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。
2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。
3:見つかったフォルダを引数にして自分自身を呼び出す。
のようになっています。「なぜこれでうまく行くのか」はちょっと説明しづらいですが、とにかくこれでうまく動くはずです。(動かなかったら補足してください。)
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=38626
の回答を参考にしてやって下さい。
「再帰」っていうのを使えば、結構簡単に取得できます。
先のアルゴリズムを簡略化して書くと、
1:引数で指定されたフォルダに含まれるファイルの一覧を取得する。
2引数で指定されたフォルダに含まれるフォルダの一覧を検索する。
3:見つかったフォルダを引数にして自分自身を呼び出す。
のようになっています。「なぜこれでうまく行くのか」はちょっと説明しづらいですが、とにかくこれでうまく動くはずです。(動かなかったら補足してください。)
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=38626
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- ソフトウェア フォルダ内の全サブフォルダ内のファイルパスをサブフォルダ毎に行を分けてリスト化したい 1 2022/11/13 10:27
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
EXPLORERで開いているフォルダ...
-
C ファイル出力で、フォルダが...
-
ファイル名から該当フォルダへ移動
-
VBA:特定の文字を含むフォルダ...
-
多量のファイルをフォルダに自...
-
サーバ内のフォルダ名と各フォ...
-
条件に合うフォルダが存在する...
-
パス名に2バイト文字(マルチバ...
-
カレントフォルダって?
-
Excel VBA 同じ名前のフォルダ...
-
フォームを最前面に表示したい...
-
フォルダ配下のファイル作成日...
-
Hitachi Embedded Workshop (HE...
-
vbsで選択ダイアログを表示した...
-
VS2005で"定義へ移動"ができません
-
VBA フォルダ名に特定の文字を...
-
バッチファイルで指定フォルダ...
-
フォルダ内のPDFファイル名を変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
パス名に2バイト文字(マルチバ...
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
Excelのハイパーリンクについて...
-
デスクトップの画像をhtmlに表...
-
ディレクトリ名変更してコピー...
-
VBA フォルダ名に特定の文字を...
-
バッチファイルで指定フォルダ...
-
フォルダ内のPDFファイル名を変...
-
Access VBA で フォルダ権限...
-
excelマクロ 冒頭3文字が一致す...
-
【マクロ】ファイル名の日付に...
-
フォルダにリンクを貼りたい
-
会社のネットワーク上のファイ...
-
多量のファイルをフォルダに自...
-
C ファイル出力で、フォルダが...
-
保存先のフォルダ名を指定した...
-
vbsで選択ダイアログを表示した...
-
Excel VBA 同じ名前のフォルダ...
おすすめ情報