AccesをExcelVBAで制御する

AccesをExcelVBAで制御する

Sub Accessをオブジェクトとして扱う()
Dim objAcc As Access.Application, tmpState As XlWindowState
Dim myMDB As String

'Accessをオブジェクトとして生成
Set objAcc = New Access.Application

'接続するmdbファイルを指定
myMDB = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb"

With objAcc
  '対象データベースをAccessで開く
  .OpenCurrentDatabase myMDB
  'Accessを画面上に表示する
  .Visible = True
  tmpState = Application.WindowState
  'Excelを一時的に最小化してメッセージ
  Application.WindowState = xlMinimized
  AppActivate "Microsoft Excel"
  MsgBox "Accessを起動しました。これからAccessを閉じます。"
  '対象データベース閉じる
  .CloseCurrentDatabase
  .Quit
End With

Application.WindowState = tmpState

Set objAcc = Nothing

End Sub

オブジェクト型変数にAccessアプリケーションのインスタンスを代入
Set オブジェクト型変数 = New Access.Application

新規にNewキーワードで作成されたAccessアプリケーションは、そのままでは画面表示されない。

ExcelVBAからAccessを扱うには参照設定が必要
Access2003 Microsoft Access 11.0 Object Library
Access2002 Microsoft Access 10.0 Object Library
Access2000 Microsoft Access 9.0 Object Library

実行結果