はじめに
VBAで作業をしていると、
「ユーザーにフォルダを選んでもらいたい」
「保存先を毎回指定するのは手間だから、選択ダイアログを出したい」
そんな“ちょっとした対話”が必要になることがあります。
そこで活躍するのが フォルダ選択ダイアログ です。
ここでは、フォルダを選択する方法を、
やさしく、実務目線でまとめて解説します。
まずはコードを確認(もっともシンプル)
Dim path As String
path = Application.FileDialog(msoFileDialogFolderPicker).Show
フォルダ選択ダイアログが表示され、
選ばれたフォルダのパスが取得できます。
フォルダ選択ダイアログの基本
フォルダを選択してパスを取得する
Dim fd As FileDialog
Dim path As String
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
path = fd.SelectedItems(1)
MsgBox "選択されたフォルダ:" & path
End If
- msoFileDialogFolderPicker がフォルダ選択専用
- Show = -1 は「OK が押された」ことを意味します
- SelectedItems(1) に選択されたフォルダのパスが入ります
具体的な例で理解する
選択したフォルダにファイルを保存する
Dim fd As FileDialog
Dim path As String
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
path = fd.SelectedItems(1)
ActiveWorkbook.SaveAs path & "\result.xlsx"
End If
ユーザーに保存先を選んでもらう実務でよく使うパターンです。
選択したフォルダ内のファイル一覧を取得する
Dim fd As FileDialog
Dim path As String
Dim f As String
Dim row As Long
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
path = fd.SelectedItems(1) & "\"
f = Dir(path & "*.*")
row = 1
Do While f <> ""
Cells(row, 1).Value = f
row = row + 1
f = Dir
Loop
End If
フォルダ選択とファイル一覧取得を組み合わせた実務向けの例です。
初期フォルダを指定する
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.InitialFileName = "C:\Data\"
fd.Show
ユーザーが迷わないように、
よく使うフォルダを初期表示にできます。
注意点(実務で気をつけたいこと)
- キャンセルされた場合は空になる
→ Show = -1 で判定すると安心。
- SelectedItems は 1 から始まる
→ SelectedItems(0) は存在しません。
- フォルダ選択は FileDialog だけ
→ GetOpenFilename はファイル選択専用。
- ネットワークフォルダは遅いことがある
→ エラー処理を入れておくと安全。
応用:フォルダ選択を関数化する
Function SelectFolder() As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
SelectFolder = fd.SelectedItems(1)
Else
SelectFolder = ""
End If
End Function
呼び出すだけでフォルダ選択ができる便利な関数です。
まとめ
- フォルダ選択は FileDialog(msoFileDialogFolderPicker) を使う
- Show = -1 で OK 判定
- SelectedItems(1) に選択されたフォルダのパスが入る
- 初期フォルダを指定するとユーザーに優しい
- ファイル保存や一覧取得と組み合わせると実務で強い
フォルダ選択は、
ユーザーとの“やさしい対話”を支える大切な機能です。

フォルダを選んでもらうだけで、
処理の流れがぐっと自然になります。
VBAは、そんな小さな対話をそっと支えてくれます。

フォルダを選ぶって、ちょっと探検みたいで楽しいよね。
VBAなら、その入り口をやさしく開いてくれるよ。

コメント