dポイントプレゼントキャンペーン実施中!

フォルダ名を取得し、それをリストボックスに表示させるマクロを作成したいのですが、どのようにすればよいでしょうか?

以下のマクロは作成しましたが、フォルダ名ではなくファイル名が取得されてしまいます。

Private Sub UserForm_Initialize()
Dim S_folderPath As String
Dim filename As String

Me.TextBox1 = ThisWorkbook.Path & "\"
S_folderPath = Me.TextBox1.Text

UserForm1.Caption = "フォルダ名を選択して下さい"
'先頭のフォルダ名の取得
FolderName = Dir(S_folderPath, vbNormal) '←リストボックスに表示させるフォルダ名
'ファイルが見つからなくなるまで繰り返す
Do While FolderName <> ""
ListBox1.AddItem FolderName

FolderName = Dir()
Loop

End Sub

どうかお力をお貸しください。

A 回答 (3件)

vbnormalを


vbDirectory
にしてください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
無事にフォルダ名が表示されるようになりました!!

追加でお聞きしたいのですが、このマクロを実行したところ、謎の「.」「..」及びこのマクロを組み込んだExcelファイルも表示されるのですが、これを排除する(=フォルダ名のみ表示させる)方法はご存じでしょうか?
厚かましく申し訳ありません。

お礼日時:2020/12/23 15:18

'ファイルが見つからなくなるまで繰り返す


Do While FolderName <> ""
If FolderName <> "." And FolderName <> ".." Then
ListBox1.AddItem FolderName
End If
FolderName = Dir()
Loop

のようにします。
    • good
    • 0
この回答へのお礼

何度も質問してしまい申し訳ありませんでした。
希望通りの動作になりました!
毎度ご丁寧にありがとうございます。

お礼日時:2020/12/23 16:11

「.」は自分自身のフォルダ


「..」は親のフォルダ
という意味です。
それは、Dirで取得した後に排除するしかありません。
If FolderName <> "." and FolderName <> ".." then
ListBox1.AddItem FolderName
End If
としてください。
    • good
    • 0
この回答へのお礼

そのような意味だったのですね!詳しくありがとうございます。

Private Sub UserForm_Initialize()
Dim S_folderPath As String
Dim filename As String

Me.TextBox1 = ThisWorkbook.Path & "\"
S_folderPath = Me.TextBox1.Text

UserForm1.Caption = "フォルダ名を選択して下さい"
'先頭のファイル名の取得
FolderName = Dir(S_folderPath, vbDirectory) '←リストボックスに表示させるフォルダ名

If FolderName <> "." And FolderName <> ".." Then
ListBox1.AddItem FolderName
End If

'ファイルが見つからなくなるまで繰り返す
Do While FolderName <> ""
ListBox1.AddItem FolderName
FolderName = Dir()
Loop

End Sub

としてみたのですが、リストボックスの内容に変わりはありませんでした。
差し込んだ位置が違うのでしょうか?初心者な質問で申し訳ないです。

お礼日時:2020/12/23 15:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています