Microsoft Excel VBA - フォルダ参照ダイアログボックスを使用する方法
◆概要
このページは、Excel VBAでフォルダ参照ダイアログボックスを使用する方法について記載しています。
Public Sub GetFolder() ' 「フォルダ参照」ダイアログボックスを利用して、フォルダを特定する。 Dim folderName As Variant Set folderName = CreateObject("Shell.Application") _ .BrowseForFolder( _ &O0 _ , "フォルダを選択してください。" _ , &H1 + &H10 _ , "DeskTop") ' フォルダが選択されたか否か判別する。 If folderName Is Nothing Then MsgBox "中止します。" Exit Sub End If MsgBox "選択されたフォルダ名は、「" & folderName & "」です。", _ vbOKOnly + vbInformation, "フォルダ参照結果" ' オブジェクトを破棄する Set folderName = Nothing End Sub
Cドライブのルートを既定のフォルダにしたいときには、CreateObjectメソッドの最後で「DeskTop」の代わりに、「C:\」を指定します。
上記の最後のステートメントでオブジェクトを破棄しています。これは、CreateObject関数で作成したオブジェクトへの参照は、参照終了後解放しなければならないためです。オブジェクトの参照を解放するには、オブジェクト型変数にNothingを代入します。
▼ページトップへ
◆関数化して利用
次のように、関数化して利用することもできます。
Function FolderPath() As String Dim Shell As Object Set Shell = CreateObject("Shell.Application").BrowseForFolder( _ 0 _ , "フォルダを選択してください" _ , 0 _ , "DeskTop") If Shell Is Nothing Then FolderPath = "" Else FolderPath = Shell.Items.Item.Path End If ' オブジェクトを破棄する Set Shell = Nothing End Function
この関数を利用するときには、呼び出し元のプロシージャで次のようにして呼び出します。
Sub test() Dim FolderSpec As String ' フォルダ参照ダイアログボックスを表示 FolderSpec = FolderPath If FolderSpec = "" Then Exit Sub Else MsgBox "選択されたフォルダ名は、「" & FolderSpec & "」です。" _ , vbOKOnly + vbInformation _ , "フォルダ参照結果" End If End Sub
▼ページトップへ