Microsoft ACCESSを利用してファイル選択するためのダイアログボックスを表示したい。
ただMicrosoft ACCESS自体には、こうした「ダイアログボックスでファイル選択する」ようなデフォルト機能がありません。
まあExcelにもないんですけどね。だから自分で作る必要があります。
そんな悩みにお答えして、ACCESSで埋め込むVBAの記述を活用したダイアログボックスの作り方を解説していこうと思います。
ダイアログ表示の画面イメージ
まずダイアログボックスの表示画面のイメージ画像からみていきましょう。
【ダイアログ表示画面はこちら】
こんな感じでファイル選択できる画面が表示されます。
ダイアログボックスを活用したファイル選択の使い方
そもそもダイアログボックスを活用する時には、どんな時に使用するのか、その使い方についても知っておきましょうね!
ダイアログボックスを活用する主な目的は3つです。
<ダイアログボックスを活用する主な目的>
- CSV,TXT,Excel等のファイルを選択してデータをDBに取り込む
- ファイルを読み込む
- ACCESSの機能にあるImport機能はエラーが多いため
※DB:データベース
まず、上記3つの場合に利用します。
ACCESSのImport機能を利用すればDBに取り込むことが可能ですが、このImport機能の場合には、取り込むデータエラー値が存在するとデータが取り込めないことがあります。
なので、ちょっと精度に不安があるのが難点でもあります。
それだけ、データの精度がしっかりしていないと、ダメなんですね。
そんな時に役立つのがこのダイアログボックスによるデータ取り込み機能を設けてあげることで、ファイルのデータをスムーズに取り込めるように機能を作ります。
参照設定を設定しよう!
ダイアログボックスを表示するためには、ACCESSの参照設定のコンポーネントを追加する必要性があります。
➡その設定方法がこちら
これらの設定は、データベースへの更新機能を用いたり、Excelと連携する際に必要な設定項目なので、基本的に✔を付けておくことをおすすめします。
ただ、このダイアログと関係するのは、「Microsoft ActiveX DataObjects ●● Library」です。
上記の設定をご確認の上、チェックを入れておきましょう。
さあ、これで初期設定は完了です。それでは実際にプログラミングについて確認していきましょう。
ファイル選択するためのダイアログボックスを表示するソース
ファイル選択するためのダイアログボックスを表示するためのソースは下記になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | '|========================================================================================== '| 定義 : ダイアログボックス表示 '|------------------------------------------------------------------------------------------ '| PG名 : blnTestGetFileName() As Boolean '|------------------------------------------------------------------------------------------ '| 説明 :ファイル選択用ダイアログボックス表示する。 '|========================================================================================== Public Function blnTestGetFileName() As Boolean <span style="font-size: 12px;" data-mce-style="font-size: 12px;">Const ENABLE_WIZHOOK = 51488399 Const DISABLE_WIZHOOK = 0 Dim strFile As String Dim intResult As Integer Dim intRet As Integer blnTestGetFileName = False WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化 intResult = WizHook.GetFileName( _ 0, "", "", "", strFile, "", _ "すべてのファイル (*.*)|*.*", _ 0, 0, 0, True _ ) WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化 If intResult <> -302 Then If strFile <> "" Then Call FileExe(strFile) gstrReadFilePath = strFile blnTestGetFileName = True gintGetFlag = 1 Else blnTestGetFileName = False End If Else MsgBox "処理が中断されました。", vbCritical End If End Function </span> |
こちらのソースを参考にして、ダイアログを表示させてみて見て下さい。
もし表示がうまくいかない場合は、ご連絡下さいね。^^
ACCESSでダイアログを表示するためのおすすめ参考書はこちら
ACCESSには、色々な機能が設けられており、その機能をしっているかいないかだけの違いです。私も色々な参考書を購入してきましたが、その中でも色々な機能を知るためには、下記が特におすすめです。
ACCESSの機能をもっと知りたいという方は、ぜひこちらの参考書をご参考にして見て下さいね。
まとめ
このように、ACCESSを活用したダイアログボックスの表示については、色々な部分で活用できる部分があります。
Excelのデータを取得したり、テキストデータをセットすることで、値を取得することができますので、この機能ができるとACCESSとエクセルの連携ができたり、メリットが盛だくさんなので、必要な方はぜひ挑戦して見て下さい。