• ベストアンサー

フォルダ内にさらにフォルダがあるか知りたい

Windows2000 VB6 で開発をしています。 フォルダ内にあるフォルダ名称だけを取得することって出来るのでしょうか? フォルダ内のファイル数が多く、一つずつ確認するのでは時間がかかりそうなので、 もっと簡単に早くできる方法がないか模索中です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dai-cha-n
  • ベストアンサー率27% (12/43)
回答No.1

こんな感じでよいですか? Sub test() Set fold = CreateObject("Scripting.FileSystemObject") folder_name = "c:\" Set folder1 = fold.GetFolder(folder_name) Set sub_folders = folder1.subfolders For Each sub_folder In sub_folders MsgBox (sub_folder.Name) Next End Sub

noname#5252
質問者

お礼

ごめんなさい! folder_nameと見ただけで、「フォルダ名固定で探すのか」と、勝手に判断してしまいました。 教えて頂いた方法で、出来ました。 どうもありがとうございました。

noname#5252
質問者

補足

フォルダ名は固定ではないので、指定できないんです・・・(>_<)

その他の回答 (3)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

さらに、ふと思った。 #1の回答が理解ができないなら、、、 ディレクトリリストボックスコントロールを使用してみては? DirListBoxというのが、標準コントロールの中にあります。 それをフォーム中にはって Dir1.Path = "c:\" などとパスを指定したら、あとはリストボックス同様の扱いができます。 個人的には、コントロールを張ると重くなるので、是非とも#1の発言を理解することに熱望

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

#1への補足を見て、ふと思った。 #1の発言の「C:\」を文字列変数にしておくだけではないの?

  • nikosaru
  • ベストアンサー率30% (3/10)
回答No.2

Dirがお嫌いではなければ、、、 Private Sub Command1_Click() Dim fo As String fo = Dir("c:\", vbDirectory) Do While fo <> "" If fo <> "." And fo <> ".." Then If (GetAttr("c:\" & fo) And vbDirectory) = vbDirectory Then Debug.Print fo End If End If fo = Dir Loop End Sub

noname#5252
質問者

補足

この方法では、フォルダにぶつかるまではループさせてファイルを一つずつ確認しないといけないということですよね? やはり、一つずつ確認するしかないのでしょうか?

関連するQ&A