説明
今回は、MicrosoftAccessのVBAを使った
ファイルオープンダイアログの作り方です。
用途としては、ファイルをパラメータとして指定して動かしたいときに
Windowsのファイル選択ダイアログを出して、ユーザーに選択させます。
例えば、ログファイルを指定させることで、そのファイルを
Accessに取り込んで処理をする、などです。
さっそく見ていきましょう。
以下コードは、ファイル選択ダイアログを出力し、
選択したファイルのフルパス(ファイル名含む)を
アクセスの部品「テキストn」に設定しています。
コード
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の操作感で使えるので、違和感が無いこともメリットです。