AccessのVBAでファイルダイアログからフォルダを指定する方法

当ページのリンクには広告が含まれています。
VBAフォルダ選択
  • URLをコピーしました!

Accessの処理において、「ユーザー指定のフォルダにファイルを出力する」というニーズがあります。

テキストボックスに直接入力やコピペによるフォルダ指定でも実現できますが、少々ユーザビリティが悪いですね。

そこで、ファイルダイアログを開いてフォルダを指定する方法が便利です。

目次

ファイルダイアログを開く画面イメージ

フォルダ選択ダイアログ

大体こんな感じのフォームをダイアログ形式で表示することが多いです。

出力フォルダのテキストボックスの横にフォルダアイコンがあるボタンを配置します。

ファイルダイアログを開くための事前準備

ダイアログを開くにはFileObjectLibralyを使用します。

VBAからこのライブラリを利用できるように、参照設定を追加する必要があります

VisualBasic画面の上部メニューのツール → 参照設定 の順で選択します。

「Microsft Office xx.x Object Library」 (xxはバージョン)にチェックを入れます。

Officeライブラリ参照設定

この参照設定がなければコンパイルエラーとなります。

参照エラー

ファイルダイアログを開く

以下のコードを標準モジュールに貼り付けます。

'--------------------------------------------------------------------
'フォルダ選択ダイアログ
'---------------------------------------------------------------------

Public Function getFolderName(tmpFilePath As String) As String

    Dim intret As Integer
    
    With Application.FileDialog(msoFileDialogFolderPicker)
    
        'ダイアログのタイトルを設定
        .Title = "フォルダ選択ダイアログ"
        
        'デフォルトのフォルダパス
        .InitialFileName = tmpFilePath
        
        'ダイアログを表示
        intret = .Show
        If intret <> 0 Then
          'フォルダが選択されたとき戻り値に設定
          getFolderName = Trim(.SelectedItems.Item(1))
        Else
          'フォルダが選択されなければ長さゼロの文字列を返す
          getFolderName = ""
        End If
    End With

End Function

後は、先のフォームのフォルダ選択ボタンのクリックイベントでこのモジュールを呼び出すだけです。

この関数の引数はデフォルトのフォルダ名(初期表示させたいフォルダ名)です。

(例)me.txt出力先=getFolderName(“c:\”)

上記の例ではCドライブ直下がデフォルトのパスとしてファイルダイアログが表示されます。

フォルダ指定

デフォルトのパスを指定しなかった場合(引数が空文字””の場合)、マイドキュメントがデフォルトのパスになります

フォルダを選択してOKをクリックすると、フォルダ選択ダイアログが閉じられ選択したフォルダがフォームの出力先テキストボックスにセットされます

尚、キャンセルをクリックした場合は出力先テキストボックスには何もセットされません

💡 Accessしかできなかった私が年収2倍のPMになった話
キャリアを見直した実体験はこちらの記事で紹介しています

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次