>re:#5
>つまり第二階層以下のフォルダーが存在する第一階層名は重複になってしまいます。
『..フォルダパスを書き出すサンプル。』ですからね。
一旦シートに書き出せば、いかようにも加工できるかと思ってましたが。
Sub try_3()
Const arg = "tree ""c:\"""
Dim ret As String
Dim v() As String
ret = CreateObject("WScript.Shell").Exec("%ComSpec% /c " & arg).StdOut.ReadAll
v = Split(ret, vbCrLf)
Sheets.Add.Cells(1).Resize(UBound(v) + 1).Value = Application.Transpose(v)
End Sub
こんなのもありますし。
最終的にどんな形式で書き出したいのか、に合わせて工夫してください。
Sub try_4()
Dim arg As String
Dim brf As Object
Dim wsh As Object
Dim ret As String
Dim v() As String
Dim r As Range
Dim i As Long
Dim n(1) As Long
Dim ary(1 To 255)
Set brf = CreateObject("Shell.Application") _
.BrowseForFolder(0, "SelectFolder", 0)
If brf Is Nothing Then Exit Sub
arg = Replace(brf.self.Path & "\", "\\", "\")
arg = "dir """ & arg & """ /a:d/b/s"
Set wsh = CreateObject("WScript.Shell")
ret = wsh.Exec("%ComSpec% /c " & arg).StdOut.ReadAll
v = Split(ret, vbCrLf)
Set r = Sheets.Add.Cells(1).Resize(UBound(v) + 1)
r.Value = Application.Transpose(v)
r.Sort Key1:=r.Cells(1)
With r.Offset(, 1)
.Value = r.Value
.Replace "*\", "\", xlPart
n(1) = 2
For i = 1 To 255
n(0) = i
ary(i) = n
Next
.TextToColumns DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:="\", _
FieldInfo:=ary
End With
Set r = Nothing
Set brf = Nothing
Set wsh = Nothing
End Sub
お礼
ありがとうございました。 うまく行きました。
補足
取得できたデータが階層ごとに列にわかれており非常に使いやすいデータでした。 これをベストアンサーとさせていただきます。