• 締切済み

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を動作させるにはどのように書けばいいのでしょうか?

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

No.1です。 やりたい事が不明ですが もしかして再帰処理なんですかね? フォルダ内のファイル一覧の取得 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html こちらはフォルダ内のファイル情報を取得してますけど、 同じようにフォルダ以下にあるフォルダ名を取得したいとか?

daikon999
質問者

補足

はい、フォルダ内のフォルダ名と、フォルダ内のフォルダの中にあるフォルダ名を取得したいです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

どちらかがbufaとしても、パスの記述が誤ってる buf = Dir("C:\aa\aaa\", vbDirectory) buf= Dir("C:\aa", vbDirectory)

daikon999
質問者

補足

両方ともbufになっているのは打ち込みミスです、実際のソースはbufとbufaになっています、すいません・・・。 Dir()の()の中が空白の時がどのような動作をしているかがわからず、それが原因かなと考えたのですが・・・。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

コード的に不思議なのは >buf = Dir(C\aa\aaa\, vbDirectory) >buf= Dir(C:\aa, vbDirectory) ともに変数:bufを使っているよね。 でも、そもそもDir関数って2重には使えないんじゃないかな? ⇒Do While が問題な訳じゃないと思う。 ただ何をしたいのかちょっと不明だったので、 具体的な回答にはなりませんけど。

daikon999
質問者

補足

両方ともbufになっているのは打ち込みミスです、実際のソースはbufとbufaになっています、すいません・・・。 Dir()の()の中が空白の時がどのような動作をしているかがわからず、それが原因かなと考えたのですが・・・。

関連するQ&A

専門家に質問してみよう