「vba フォルダを選択するダイアログ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、時折見られます。
VBA(Visual Basic for Applications)で、フォルダーを選択するダイアログを表示する方法を探している方による検索です。
Excel・Windows・Internet Explorerなどのバージョンによって、ファイル・フォルダーを操作する方法は、いろいろとあります。
フォルダーを選択してもらうサンプルマクロ
最近の環境で、フォルダーをユーザーに指定してもらうためには、FileDialogオブジェクトを使うのがもっとも基本的な操作でしょうか。
Dim dlg As FileDialog
Dim fold_path As String
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
' キャンセルボタンクリック時にマクロを終了
If dlg.Show = False Then Exit Sub
' フォルダーのフルパスを変数に格納
fold_path = dlg.SelectedItems(1)
MsgBox fold_path
End Sub上記のマクロを実行すると、下図のようなフォルダーを指定するダイアログが表示され、
フォルダーを指定して[OK]ボタンをクリックすると、指定されたフォルダーのフルパスがメッセージボックスに表示されます。
サンプルマクロの解説
Application.FileDialogプロパティの引数・FileDialogTypeに、定数・msoFileDialogFolderPickerを指定すると、フォルダーを指定する状態でFileDialogオブジェクトが取得できます。
上記のマクロではFileDialog型のオブジェクト変数dlgにFileDialogをセットしています。
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
FileDialogオブジェクトのShowメソッドを実行すると、フォルダーを選択するダイアログが表示されます。
ダイアログで[キャンセル]ボタンがクリックされたような場合には0(ゼロ)・Falseが返されるので、上記のコードでは、
If dlg.Show = False Then Exit Sub
とFalseが返されたとき(キャンセルされたとき)に、Subプロシージャを抜けるようにしています。
指定されたフォルダーのフルパスを取得しているのが
fold_path = dlg.SelectedItems(1)
です。
FileDialogオブジェクトのSelectedItemsプロパティは、選択されているファイルのフルパスをFileDialogSelectedItemsオブジェクトとして返してきます。
FileDialogSelectedItemsオブジェクトのデフォルトはItemメソッドで、文字列型のデータ(フルパス)を取得できます。
フォルダーの場合は1つしか選択できないのですが、やっぱりFileDialogSelectedItemsオブジェクトとして返されるので、その1つ目を取得するために
dlg.SelectedItems(1)
としています。
- Newer:テキストボックス内の改行を削除するPowerPointマクロ
- Older:2014年年間カレンダーの無料ダウンロード
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » マクロ実行中にフォルダーを選択・指定してもらう-FileDialog(msoFileDialogFolderPicker)