Access VBA 外部のデータベースに接続・切断する方法。

VBA で DAO を使用すると、カレントデータベース以外に、外部のデータベースにも接続することができます。

外部のデータベースとは、VBA のプログラムを書いているデータベースとは別の「mdbファイル」のことです。

外部のデータベースに接続できると、データを複数のファイルに分散して保存したり、プログラムとデータを分離できるので、メンテナンスしやすくなります。

カレントデータベースの場合に比べて、少しだけプログラムが増えますが、ほとんど同じような手順です。


【1】テスト用に「test.mdb」という名前のファイルを用意します。

接続テストを行なうだけなので、新規に作成した空のデータベースでも、「SampleDB020.mdb」をコピーして名前を変更したものでもかまいません。


【2】Cドライブの直下に、「test.mdb」を配置します。

C:\test.mdb
access-vba-147.gif

*「\」はWindowsでは円記号のことです。

わかり易いように、Cドライブの直下にしましたが、本来はどこに配置してもかまいません。ただし後でファイルのパスを書く必要があります。


【3】Access で VBEを起動し、標準モジュール「test5」のコードを表示します。

access-vba-148.gif

*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


access-vba-152.gif

入力候補とコピーを上手く使って入力してください。


【5】Subプロシージャの connDb2() から、プログラムを実行してください。

・connDb2()の実行結果
access-vba-150.gif

イミディエイト ウィンドウに、外部のデータベースへの接続と切断のメッセージが表示されます。


【6】2回目はブレークポイントを設定して、1行ずつ実行してみてください。

access-vba-153.gif


動作確認が済んだら、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


今後のサンプルプログラムは、カレントデータベースを対象とします。しかし外部のデータベースの場合も、接続・切断が少し違うだけで、あとは同じです。

今回のプログラムが理解できれば、外部のデータベース用に書き換えることができると思います。

スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ