- 締切済み
VBAでのDoWhileの中のDoWhile
VBAでファイル名取得のマクロを作成しているのですが buf = Dir(C\aa\aaa\, vbDirectory) buf= Dir(C:\aa, vbDirectory) Do While buf <> "" Do While bufa <> "" msg = msg & bufa & vbCrLf bufa = Dir() Loop msg = msg & buf & vbCrLf buf = Dir() Loop がうまく動作しません。 Dirの()が空白なのと、Do While <>の中身が空白のどちらかが原因だと思うのですが Do Whileの中でさらに Do Whileを動作させるにはどのように書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
No.1です。 やりたい事が不明ですが もしかして再帰処理なんですかね? フォルダ内のファイル一覧の取得 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html こちらはフォルダ内のファイル情報を取得してますけど、 同じようにフォルダ以下にあるフォルダ名を取得したいとか?
- bin-chan
- ベストアンサー率33% (1403/4213)
どちらかがbufaとしても、パスの記述が誤ってる buf = Dir("C:\aa\aaa\", vbDirectory) buf= Dir("C:\aa", vbDirectory)
補足
両方ともbufになっているのは打ち込みミスです、実際のソースはbufとbufaになっています、すいません・・・。 Dir()の()の中が空白の時がどのような動作をしているかがわからず、それが原因かなと考えたのですが・・・。
- n-jun
- ベストアンサー率33% (959/2873)
コード的に不思議なのは >buf = Dir(C\aa\aaa\, vbDirectory) >buf= Dir(C:\aa, vbDirectory) ともに変数:bufを使っているよね。 でも、そもそもDir関数って2重には使えないんじゃないかな? ⇒Do While が問題な訳じゃないと思う。 ただ何をしたいのかちょっと不明だったので、 具体的な回答にはなりませんけど。
補足
両方ともbufになっているのは打ち込みミスです、実際のソースはbufとbufaになっています、すいません・・・。 Dir()の()の中が空白の時がどのような動作をしているかがわからず、それが原因かなと考えたのですが・・・。
補足
はい、フォルダ内のフォルダ名と、フォルダ内のフォルダの中にあるフォルダ名を取得したいです。