実現したいこと
Windowsのフルパスの制限が2百数十文字であることはネットで見かけていますが、その制限を超えた長いフルパスについても、excel-VBAで、フォルダのツリー構造を再帰的に辿って、中のファイルを削除したり、個数をカウントしたり、したい。
発生している問題・分からないこと
上の目的のため、フォルダのツリー構造を再帰的に辿ってみたところ、フォルダやファイルのフルパスが、2百何十文字かを超えると、不具合がありました。
具体的には、
(a)folder_.subfolders.Count だと、フォルダ数が取得できたけど、
(b)For Each subfolder_ In folder_.subfolders だと、見つからないフォルダがあった。
つまり、(b)だと、フルパスが長すぎるフォルダが見つかりません。
フルパスが300文字を超える場合でも、VBAで、再帰的に全てのサブフォルダをたどりたいです。
どのようなコードを書けば可能でしょうか?
※紛らわしくてすみません。再帰的プログラムの質問でなく、フルパス300文字のファルダやファイルをVBAでアクセスる方法の質問でした。
taratail投稿用にプログラムを改変した際に、再帰的プログラムではなくなりましたが、再帰的かどうかは質問の趣旨ではありません。
該当のソースコード
Sub 調査() Set fso = CreateObject("Scripting.FileSystemObject") Set folder_ = fso.getfolder("{省略}") ' {省略}部分は、フォルダのパス、300文字くらい cnt1 = folder_.subfolders.Count cnt2 = 0 For Each subfolder_ In folder_.subfolders cnt2 = cnt2 + 1 Next Debug.Print cnt1, cnt2 End Sub ’ 結果→「 1 0 」
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
解決案が見つかっていません。
補足
特になし

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/11 09:05 編集
2024/03/11 09:21
2024/03/11 09:40 編集
2024/03/12 00:44 編集
2024/03/12 15:07 編集
2024/03/13 06:31 編集
2024/03/13 13:29