|
ちょっとソースが部分的にしか表示してませんが、悪戦苦闘しながら、こんな感じでできました。その他のコントロールで、"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
|
|