#625 印刷ダイアログを表示してから印刷させるには? レポート、VBA

たとえば画面のあるボタンをクリックしたとき、レポートを「印刷プレビューする」あるいは「直ちにプリンタから印刷する」といった場合には、コントロールウィザードを使って簡単にそのボタンを作ることができます。

一方、印刷対象ページや部数などを指定できる「印刷ダイアログ」を表示させて、そこで設定後に印刷を実行したい場合には、プレビューから所定の印刷操作を行うか、VBAを使ってその流れを記述する必要があります。


ここでは、そのサンプルを紹介します。

以下のプログラムは「#201 [ファイル]-[印刷]メニューをVBAから実行するには?」の改良版です。次のような項目が改良点となっています。
  • 実際にはまずレポートのプレビューが開かれるが、それはユーザーには見せないようにする
  • すでにプレビューされている状態でも、最新データを反映させるため、再度レポートを開き直すようにする
  • 印刷ダイアログで[キャンセル]が押されたときのエラー回避
  • 印刷データが1件もないときのエラー回避


Sub Sample()

  Const cstrRptName As String = "レポート1"

  On Error GoTo Err_Handler

  'プレビューウィンドウの表示を抑止
  Echo False

  'すでに同名レポートが開いていたら閉じる
  DoCmd.Close acReport, cstrRptName

  'レポートをプレビューで開く
  DoCmd.OpenReport cstrRptName, acViewPreview

  '印刷ダイアログを表示
  DoCmd.RunCommand acCmdPrint

Exit_Here:
  On Error Resume Next
  'プレビューを閉じる
  DoCmd.Close acReport, cstrRptName
  Echo True
  Exit Sub

Err_Handler:
  If Err.Number = 2501 Then
    'エラーを無視する
  Else
    MsgBox "エラー発生"
  End If
  Resume Exit_Here:

End Sub

| Index | Prev | Next |



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