LoginSignup
8
14

More than 5 years have passed since last update.

【AccessVBA】ファイル選択ダイアログの作り方

Posted at

説明

今回は、MicrosoftAccessのVBAを使った
ファイルオープンダイアログの作り方です。

用途としては、ファイルをパラメータとして指定して動かしたいときに
Windowsのファイル選択ダイアログを出して、ユーザーに選択させます。

例えば、ログファイルを指定させることで、そのファイルを
Accessに取り込んで処理をする、などです。

さっそく見ていきましょう。
以下コードは、ファイル選択ダイアログを出力し、
選択したファイルのフルパス(ファイル名含む)を
アクセスの部品「テキストn」に設定しています。

コード

AccessVBA
Private Sub コマンドx_Click()

    On Error Resume Next
    '変数定義
    Dim intRet As Integer         'ダイアログ用変数
    Dim GetFileName As String     'フルパスの値

    With Application.FileDialog(msoFileDialogOpen)
        'ダイアログのタイトルを設定
        .Title = "ファイルを開くダイアログ"
        'ファイルの種類を設定
        .Filters.Clear
        .Filters.Add "Microsoft Office Excelファイル", "*.xls,*.csv"
        .FilterIndex = 1
        '複数ファイル選択を許可しない
        .AllowMultiSelect = False
        '初期パスを設定
        .InitialFileName = CurrentProject.Path
        'ダイアログを表示
        intRet = .Show

        If intRet <> 0 Then
          'ファイルが選択されたとき
          'そのフルパスを返り値に設定
          GetFileName = Trim(.SelectedItems.Item(1))
        Else
          'ファイルが選択されなければブランク
          GetFileName = ""
        End If
    End With
    '選択されたフルパスをテキストボックスへ表示
    Form_F_Form.テキストn.Value = GetFileName

End Sub

補足

基本的にはそのまま使えますね。
手を加えるとしたら、以下3点です。

.Filters.Add "Microsoft Office Excelファイル", "*.xls,*.csv"

ここではxls/csvのみ選択できるようにしています。
*にすると、なんでも選択できます。

.AllowMultiSelect = False

複数選択を禁止しています。
許可する場合は、返り値を取得する箇所にも注意が必要です。

.InitialFileName = CurrentProject.Path

ファイル選択ダイアログの初期表示の設定です。
ここではAccessファイルのパスを表示ししていますが、ケースによって
使いやすいパスを設定しておくと良いでしょう。

おわりに

可変のファイルを扱う場合、Accessにハードコーディングしたり、
ファイルパスをフォームに貼り付けしてもできますが、
ファイル選択ダイアログを使って選択させてあげたほうが、
より柔軟で使いやすいでしょう。

ユーザーも、Windowsの操作感で使えるので、違和感が無いこともメリットです。

8
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
14