Sub Sample2()
Dim buf As String, msg As String
buf = Dir("tanaka*.*", vbReadOnly + vbHidden)
Do While buf <> ""
msg = msg & buf & vbCrLf
buf = Dir()
Loop
MsgBox msg
End Sub
Sub Sample3()
Dim buf As String, msg As String
buf = Dir("*.*", vbDirectory)
Do While buf <> ""
msg = msg & buf & vbCrLf
buf = Dir()
Loop
MsgBox msg
End Sub
Sub Sample4()
Dim buf As String, msg As String
buf = Dir("*.*", vbDirectory)
Do While buf <> ""
If InStr(buf, ".") = 0 Then msg = msg & buf & vbCrLf
buf = Dir()
Loop
MsgBox msg
End Sub
Sub Sample5()
Dim buf As String, msg As String
buf = Dir("Book*.xls", vbHidden + vbReadOnly + vbSystem)
If GetAttr(buf) And vbHidden Then msg = msg & "隠し属性" & vbCrLf
If GetAttr(buf) And vbReadOnly Then msg = msg & "読み取り専用属性" & vbCrLf
If GetAttr(buf) And vbSystem Then msg = msg & "システム属性" & vbCrLf
msg = buf & " は、" & vbCrLf & msg
MsgBox msg
End Sub
以上のことから、Dir関数でサブフォルダ名だけを取得するには、次のようにすればいいとわかります。
Dir関数の第二引数にvbDirectoryを指定する
返り値にvbDirectory属性が設定されているかをGetAttr関数で調べる
「.」と「..」は除く
Sub Sample6()
Dim buf As String, msg As String
buf = Dir("*.*", vbDirectory)
Do While buf <> ""
If GetAttr(buf) And vbDirectory Then
If buf <> "." And buf <> ".." Then msg = msg & buf & vbCrLf
End If
buf = Dir()
Loop
MsgBox msg
End Sub