Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12922 / 13644 ツリー ←次へ | 前へ→

【7894】ツリービューで FlA 03/9/22(月) 18:15 質問
【7895】Re:ツリービューで INA 03/9/22(月) 18:19 回答
【7898】Re:ツリービューで FlA 03/9/22(月) 19:15 質問
【7900】Re:ツリービューで INA 03/9/22(月) 21:11 回答
【7937】Re:ツリービューで Jaka 03/9/24(水) 15:48 回答
【7950】Re:ツリービューで FlA 03/9/25(木) 9:26 お礼

【7894】ツリービューで
質問  FlA  - 03/9/22(月) 18:15 -

引用なし
パスワード
   ツリービューで指定したパス配下全てのフォルダを表示したいのですが、ツリービューの使い方がわかりません。ツリービューが詳しい方がいらっしゃたら、教えてください!

【7895】Re:ツリービューで
回答  INA  - 03/9/22(月) 18:19 -

引用なし
パスワード
   マイクロソフトのサイトは見られましたか?

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vboritreeviewctltasks.asp

【7898】Re:ツリービューで
質問  FlA  - 03/9/22(月) 19:15 -

引用なし
パスワード
   マイクロソフトのサイトを見たのですが、実際にエクセルではどうやるのでしょうか?

【7900】Re:ツリービューで
回答  INA  - 03/9/22(月) 21:11 -

引用なし
パスワード
   ExcelでもVBと同じなので、マイクロソフトのサイトに書いてある方法が
そのまま適用できると思いますが・・・?

【7937】Re:ツリービューで
回答  Jaka  - 03/9/24(水) 15:48 -

引用なし
パスワード
   こんにちは。
>パス配下全てのフォルダを表示したいのですが
は、良くわかんないです。
(雑誌に再帰利用するって書いてあったんで、今だにパスしてます。)
ツリーは、こんな感じ?
うまくループ組んで処理して下さい。

Private Sub UserForm_Initialize()
  Dim NodA As Node
  TreeView1.LineStyle = 0
  'TreeView1.Style = tvwTreelinesPlusMinusPictureText
  TreeView1.Style = 7
  With TreeView1.Nodes
    Set NodA = .Add(, , "Root", "フォルダ1")
    Set NodA = .Add("Root", tvwChild, "Child1", "フォルダ1_1")
    Set NodA = .Add("Root", tvwChild, "Child2", "フォルダ1_2")
    Set NodA = .Add("Root", tvwChild, "Child3", "フォルダ1_3")

    Set NodA = .Add("Child1", tvwChild, "Child11", "フォルダ1_1_1")
    Set NodA = .Add("Child1", tvwChild, "Child12", "フォルダ1_1_2")
    Set NodA = .Add("Child2", tvwChild, "Child21", "フォルダ1_2_1")
    Set NodA = .Add("Child2", tvwChild, "Child22", "フォルダ1_2_2")
    Set NodA = .Add("Child3", tvwChild, "Child31", "フォルダ1_3_1")
    Set NodA = .Add("Child3", tvwChild, "Child32", "フォルダ1_3_2")

    Set NodA = .Add("Child11", tvwChild, "Child111", "フォルダ1_1_1_1")
    Set NodA = .Add("Child11", tvwChild, "Child112", "フォルダ1_1_1_2")
    Set NodA = .Add("Child12", tvwChild, "Child121", "フォルダ1_1_2_1")
    Set NodA = .Add("Child12", tvwChild, "Child122", "フォルダ1_1_2_2")

    Set NodA = .Add("Child31", tvwChild, "Child311", "フォルダ1_3_1_1")
    Set NodA = .Add("Child31", tvwChild, "Child312", "フォルダ1_3_1_2")
    Set NodA = .Add("Child32", tvwChild, "Child321", "フォルダ1_3_2_1")
    Set NodA = .Add("Child32", tvwChild, "Child322", "フォルダ1_3_2_2")
  End With
  Set NodA = Nothing
End Sub

【7950】Re:ツリービューで
お礼  FlA  - 03/9/25(木) 9:26 -

引用なし
パスワード
   ちょっとソースが部分的にしか表示してませんが、悪戦苦闘しながら、こんな感じでできました。その他のコントロールで、"Microsoft Treeview Contorols Ver6"と、参照設定で、"Windows Scripting Runtime"を使用して作成しました。再帰処理をしてるので、ツリーを表示するのに時間がかかってしまいますけどね。いろいろとありがとうございました。


Private Sub DirGetBtn_Click() 'エクスプローラ表示処理
On Error Resume Next
If WorkUserForm.ComboBox1.Value = "" Then
 MsgBox "ドライブが選択されていません。", vbCritical, "エラーメッセージ"
Else
 'サブフォルダチェック処理呼び出し
 drnamechk = InStr(WorkUserForm.ComboBox1.Value, "(") + 1
 drname = Mid(WorkUserForm.ComboBox1.Value, drnamechk, 2)
 Set drive = fso.GetDrive(drname)
 If Err.Number = 68 Then
  MsgBox drname & " デバイスの準備ができてません。", vbCritical, "エラー"
  Exit Sub
 End If
 If drive.IsReady = True Then
  Set item = WorkUserForm.TreeView1.Nodes.Add(, , , drname)
  Application.ScreenUpdating = False
  Call seekfolder(fso.GetFolder(drname & "\"), item)
 Else
  MsgBox drname & " ドライブにディスクを挿入してください。", vbCritical, "ディスクの挿入"
 End If
 Application.ScreenUpdating = True
End If
End Sub

Private Sub seekfolder(fsofolder As Scripting.Folder, item As node) 'サブフォルダ存在チェック処理

Dim fsosubfolder As Scripting.Folder
Dim subitem As node

 If InStr(fsofolder, "System Volume Information") > 0 Then
  '何もしない
 Else
  For Each fsosubfolder In fsofolder.SubFolders
   If InStr(fsofolder, "System Volume Information") > 0 Then
   '何もしない
   Else
   If fsofolder.SubFolders.Count > 0 Then
    Set subitem = WorkUserForm.TreeView1.Nodes.Add(item.Index, tvwChild, , fsosubfolder.Name)
    Call seekfolder(fsosubfolder, subitem)
   Else
    Exit For
   End If
   End If
  Next
 End If
End Sub

12922 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free