| Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項 | |
|
当サイトでも、No78.WindowsAPIを用いてファイルを開く方法 でご紹介しましたが、Windows API の利用ですからややっこしいのが難点でした。 今度登場したAccess2002では、ちょっとした操作でこれを実現させることができます。まぁ、Access2002に付属するものではなくて、Office2002に付属するのが正確ですけど、兎に角便利になりました。以下、順を追ってその方法をご紹介します。 重要※Access2002、2003専属の運用です。 残念ながら、Access2000以下では利用できませんのでご承知ください。 Access2000、97をご利用の方は、
で実現できます。 下記の関連ページを参照して下さい。 下準備
標準モジュールでは、新規のAccessを立ち上げてモジュールに下記のFunctionプロシージャを記述します。 Function FileSelect()
On Error GoTo ErrorHandler 'エラー処理ルーチンを実行します。
Dim Returnvalue As Variant
Dim strmsg As String
Returnvalue = SysCmd(acSysCmdAccessVer)
strmsg = "Access2002、2003でないため、この機能を利用できません。"
'Accessのバージョンを調べます。
'Access2000は10.0、Access2000は9.0,Access97は8.0,Access95は7.0を返します。
If Returnvalue = "10.0" Or Returnvalue = "11.0" Then
Dim inttype As Integer
Dim varSelectedFile As Variant
'ファイルを選択する場合は、msofiledialogfilepicker
'フォルダーを選択する場合は、msofiledialogfolderpicker
inttype = msofiledialogfilepicker
'ファイル参照用の設定値をセットします。
With Application.FileDialog(inttype)
'ダイアログタイトル名
.Title = "ファイル選択 By Microsoft Access Club"
'ファイルの種類を定義します。
.Filters.Add "HTML ファイル", "*.html"
.Filters.Add "HTMファイル", "*.htm"
.Filters.Add "すべてのファイル", "*.*"
'複数ファイル選択を可能にする場合はTrue、不可の場合はFalse。
.AllowMultiSelect = False
'最初に開くホルダーを当ファイルのフォルダーとします。
.InitialFileName = CurrentProject.Path
If .Show = -1 Then 'ファイルが選択されれば -1 を返します。
For Each varSelectedFile In .SelectedItems
FileSelect = varSelectedFile
Next
End If
End With
Else
MsgBox strmsg, vbOKOnly, "Microsoft Access Club"
End If
Exit Function
ErrorHandler:
MsgBox "予期せぬエラーが発生しました" & Chr(13) & _
"エラーナンバー:" & Err.Number & Chr(13) & _
"エラー内容:" & Err.Description, vbOKOnly
End
End Function
解説今回のサンプルは、フォーム上のテキストボックス(非連結)にコマンドボタンを押してPC内部のファイルを選択し、パスを代入するものです。
フォームに組み込んだイベントプロシージャコマンドボタンの「クリック時イベント」には下記のプロシージャを記述しています。 Private Sub Cmd_Click()
'プロシージャ FileSelect を呼び出し、その値をテキストボックスに代入します。
Me.txt_選択テキストボックス = FileSelect
End Sub
補足SysCmd関数今回、Access2002限定機能を使いますので、Accessバージョンを調べる SysCmd関数を組み込んで関数の戻り値(Access2002なら10.0)によってプロシージャの進行を制御しています。 Returnvalue = SysCmd(acSysCmdAccessVer) (中略) If Returnvalue = "10.0" Then ファイルの複数選択ファイルの複数同時選択も可能なように、ファイル名の取得に For Each 〜 Next を用いています。 '複数ファイル選択を可能にする場合はTrue、不可の場合はFalse
FD.AllowMultiSelect = False
If FD.Show = -1 Then 'ファイルが選択されれば -1 を返す。
For Each varSelectedFile In FD.SelectedItems
FileSelect = varSelectedFile
Next
End If
フォルダー選択今回はファイル選択でしたが、フォルダー選択にしたい場合は、 msofiledialogfilepicker
→ msofiledialogfolderpicker と、入れ替えるだけでOKです。 関連ページ
ここで用いたサンプルファイルは、Access2002、2003専用ファイルです。ご注意ください。
|