参照設定を使用せずにアクセスでフォルダ選択ダイアログを使うには

スポンサーリンク

アクセスには、ファイルやフォルダを選択するダイアログは用意されていません。

ファイル選択ダイアログを起動させたところ

ネットで検索すると、エクセルの「GetOpenFilename」をアクセスで使ったり、Officeオブジェクトのファイル選択ダイアログを使うという方法がヒットします。

このブログでは、以前、参照設定を使わずにファイルを選択するダイアログを実行する方法を紹介しました。今回は、フォルダを選択するダイアログを実行する方法を紹介したいと思います。

使用される際は、そちらの環境で十分テストのうえ使用してください。

Function FolderSelect() As String

On Error GoTo ErrHNDL  'エラー処理を宣言します。エラーが生じたら ErrHNDL 部分へ飛びます。

'フォルダ参照用の設定値をセットします。
'フォルダを選択する場合は、msoFileDialogFolderPicker → 4(定数)
With Application.FileDialog(4)

     'ダイアログタイトル名
     .Title = "フォルダを選択してください"
     
     '複数ファイル選択を可能にする場合はTrue、不可の場合はFalse。
     .AllowMultiSelect = False

     '最初に開くフォルダーを、当ファイルが存在しているフォルダーとします。
     .InitialFileName = CurrentProject.Path & "\"

    If .Show = -1 Then 'ファイルが選択されれば -1 を返します。
    
        FolderSelect = .SelectedItems(1)
    Else
    
        FolderSelect = ""
        Exit Function
    End If
End With
Exit Function

ErrHNDL:

     MsgBox Err.Number & vbCrLf & Err.Description
     Exit Function
End Function

コードを実行すると、このようにフォルダ選択ダイアログが出現します。

フォルダ選択ダイアログ

コメントをどうぞ!

  1. けーいち より:

    とても素晴らしい記事をありがとうございました。
    とても助かりました。

    • 和休 和休 より:

      けーいち様
      コメントありがとうございます。お役に立てたようで何よりです。

  2. void より:

    Dim varTgtFldNM As Variant
    この行は不要ですよね。FileSelectのコピペの残りでしょうか。
    Function定義の戻り値の型宣言も省略しないほうがよろしいかと。

    • 和休 和休 より:

      void様
      コメントありがとうございました。
      お見込みのとおりです。修正いたしました。
      ご指摘いただきまして、ありがとうございました。

タイトルとURLをコピーしました