Excel VBAからAccessのレポートをプレビュー
Excel VBAからAccessのレポートをプレビュー用に開く方法です。
Excel側のコーディング
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long _ , ByVal nCmdShow As Long) As Long
Private Sub CommandButton1_Click() Dim oAccess As Access.Application Dim rc As Long Set oAccess = CreateObject("Access.Application") oAccess.OpenCurrentDatabase ThisWorkbook.Path & "\" & "testdb.mdb" rc = ShowWindow(oAccess.Application.hWndAccessApp, 2) oAccess.Reports.Application.Visible = True oAccess.DoCmd.OpenReport "testreport", acViewPreview oAccess.DoCmd.MoveSize 100, 100, 11340, 8505 'ポップアップウィンドウのサイズ調整 Set oAccess = Nothing End Sub
Access側がAccess2000の場合、以下のような方法でも可能です。
Private Sub CommandButton1_Click() Dim oAccess As Access.Application Set oAccess = CreateObject("Access.Application") oAccess.OpenCurrentDatabase ThisWorkbook.Path & "\" & "testdb.mdb" oAccess.Reports.Application.Visible = True oAccess.Reports.Application.UserControl = True oAccess.DoCmd.RunCommand acCmdAppMaximize 'Accessメインウィンドウを最大化 oAccess.DoCmd.OpenReport "testreport", acViewPreview oAccess.DoCmd.Maximize 'Accessレポートを最大化 Set oAccess = Nothing End Sub
Access側の作業
- 対象のレポートを作成する。
- 表示するレポートの「ポップアップ」プロパティを「はい」にする。(Access2000の場合は設定しません)
- 表示するレポートの「閉じる時」プロパティ(イベント)を編集して、以下のようなイベントプロシージャを追加する。
Private Sub Report_Close() Quit End Sub
動作確認
Excel2003 + Access2003
※Access2000のやり方のほうは、Excel2000 + Access2000 で確認しました.