外部のデータベースとは、VBA のプログラムを書いているデータベースとは別の「mdbファイル」のことです。
外部のデータベースに接続できると、データを複数のファイルに分散して保存したり、プログラムとデータを分離できるので、メンテナンスしやすくなります。
カレントデータベースの場合に比べて、少しだけプログラムが増えますが、ほとんど同じような手順です。
【1】テスト用に「test.mdb」という名前のファイルを用意します。
接続テストを行なうだけなので、新規に作成した空のデータベースでも、「SampleDB020.mdb」をコピーして名前を変更したものでもかまいません。
【2】Cドライブの直下に、「test.mdb」を配置します。
C:\test.mdb
*「\」はWindowsでは円記号のことです。
わかり易いように、Cドライブの直下にしましたが、本来はどこに配置してもかまいません。ただし後でファイルのパスを書く必要があります。
【3】Access で VBEを起動し、標準モジュール「test5」のコードを表示します。
*VBEは「Altキー」+「F11キー」で起動できます。
【4】「test5」に Subプロシージャ を1つ追加します。
Sub connDb2()
Dim ws As Workspace
Set ws = DBEngine.Workspaces(0)
Dim db As DAO.Database
Set db = ws.OpenDatabase("c:\test.mdb")
Debug.Print "外部のデータベースに接続しました。"
db.Close
Set db = Nothing
ws.Close
Set ws = Nothing
Debug.Print "外部のデータベースを切断しました。"
End Sub
入力候補とコピーを上手く使って入力してください。
【5】Subプロシージャの connDb2() から、プログラムを実行してください。
・connDb2()の実行結果
イミディエイト ウィンドウに、外部のデータベースへの接続と切断のメッセージが表示されます。
【6】2回目はブレークポイントを設定して、1行ずつ実行してみてください。
動作確認が済んだら、Cドライブの直下に配置した、「test.mdb」は、もう不要なので削除してもかまいません。
【解説】
前回のカレントデータベースに接続したプログラムとほとんど同じなので、違う部分に絞って説明します。
(1)ワークスペースオブジェクト型の変数を宣言している部分です。
Dim ws As Workspace
(2)Jetデータベースへのセッションを開いている部分です。
Set ws = DBEngine.Workspaces(0)
(3)外部のデータベースに接続している部分です。
Set db = ws.OpenDatabase("c:\test.mdb")
*引数に mdb ファイルへのパスを正確に入力します。
Cドライブの直下に配置したのは、パスが短くて済むからです。
(4)ワークスペースを閉じている部分です。
ws.Close
*ワークスペースは、必ずデータベースの後に閉じます。
(5)オブジェクトの関連付けを無効にしている部分です。
Set ws = Nothing
今後のサンプルプログラムは、カレントデータベースを対象とします。しかし外部のデータベースの場合も、接続・切断が少し違うだけで、あとは同じです。
今回のプログラムが理解できれば、外部のデータベース用に書き換えることができると思います。