#178 もう1つのAccessデータベースを開く方法(API版) VBA、API

WindowsAPIの「ShellExecute」関数を使って、もう1つのAccessデータベースを開くサンプルです。

ShellExecuteは、「ファイルタイプ(拡張子)に関連付けられたアプリケーションでファイルを開く」関数です。したがって、「.MDB」にはAccessが関連付けられているはずですので、Access本体(MSACCESS.EXE)のフルパスを指定する必要はなく、データベースファイルのパスを指定してやるだけで、Accessの起動とそのファイルのオープンを行うことができます。


まず標準モジュールに次のコードを記述します。"Declare"の前に"Private"を付けることによってフォームのモジュールにも記述できます。
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
  ByVal lpParameters As String, ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
続いて、もう1つのAccessデータベースを開く処理を実行するコマンドボタンなどに、次のようなコードを記述します。
Dim strDBPath As String
Dim lngRet As Long

'データベースファイルのパスを設定
strDBPath = """C:\My Documents\db1.MDB"""

'WinAPIを使って関連付けられたアプリケーションを起動
lngRet = ShellExecute(hWndAccessApp, "open", strDBPath, vbNullString, CurDir(), SW_SHOWNORMAL)

'返り値が32以下の場合はエラー
If lngRet <= 32 Then
  MsgBox "データベースを開けませんでした!"
End If

ただし、この方法には次のようなデメリットや制約があります。
  • 複数バージョンのAccessがインストールされていると、どのバージョンのAccessが起動するか分からない。
  • 開いたデータベースをコントロールすることはできない
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved