Excel VBAでフォルダ選択ダイアログを表示する

フォルダ選択ダイアログは本当によく使用し、ファイル選択ダイアログと同様にどの言語にも登場するTipsです。




Homeに戻る > Excel ファイル操作のTipsへ

ここではFileDialogオブジェクトを使う方法と、Shell関数を使う方法の2種類を紹介します。

標準モジュールコード(初期フォルダを指定する方法)では、ダイアログで「OK」ボタンがクリックされフォルダが選択された場合、If Right$(s1, 1) <> "\" Then s1 = s1 + "\" で最後の「¥」をチェックし、なければ強制的に「¥」を付けるようにしています。

このプロシージャはパターンなので特に気にせず、毎回使い回しすればいいかと思います。

関連するTipsの「Dir フォルダ一覧を作成するExcel関数」も参照してください。


■方法1 VBAでFileDialogオブジェクトを使いフォルダ選択ダイアログを表示する

コマンドボタン クリックイベントでフォルダ選択ダイアログを開く

Private Sub CommandButton1_Click()
    CommandButton1.Caption = SelectFolder_FileDialog
End Sub

フォルダ選択ダイアログExcel標準モジュールコード

Public Function SelectFolder_FileDialog()
    If Application.FileDialog(msoFileDialogFolderPicker).Show Then
        SelectFolder_FileDialog = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    Else
        SelectFolder_FileDialog = ""
    End If
End Function

フォルダ選択ダイアログExcel標準モジュールコード(初期フォルダを指定する方法)

Public Function SelectFolder_FileDialog(iniDir As String) As String
    Dim s1 As String
    
    'フォルダ選択ダイアログ
    With Application.FileDialog(msoFileDialogFolderPicker)
        'タイトル
        .Title = "フォルダを選択してください"
        '初期フォルダ
        .InitialFileName = iniDir
        If .Show = -1 Then
            '選択された
            s1 = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
            If Right$(s1, 1) <> "\" Then s1 = s1 + "\"
            SelectFolder_FileDialog = s1
        Else
            SelectFolder_FileDialog = ""
        End If
    End With
End Function

フォルダ選択ダイアログの画面

フォルダダイアログ

■方法2 VBAでShell関数を使いフォルダ選択ダイアログを表示する

コマンドボタン クリックイベントでフォルダ選択ダイアログを開く

Private Sub CommandButton1_Click()
    CommandButton1.Caption = SelectFolder_Shell
End Sub


フォルダ選択ダイアログExcel標準モジュールコード

Public Function SelectFolder_Shell()
    Dim Shell, myPath
    
    Set Shell = CreateObject("Shell.Application")
    Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "C:\")
    If Not myPath Is Nothing Then
        SelectFolder_Shell = myPath.Items.Item.Path
    Else
        SelectFolder_Shell = ""
    End If
End Function

フォルダ選択ダイアログの画面

ツリー表示のフォルダダイアログ


Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved