IT

【ACCESS】レポートを印刷すると後ろのフォームが印刷される時の解決方法!

【ACCESS】レポートを印刷すると後ろのフォームが印刷される時の解決方法!

先日、ACCESSでレポートを印刷プレビューで表示し、リボンの「印刷」ボタンからレポートを印刷したところ、後ろに表示されているフォームが印刷されてしまいました。
作りは間違っていないはずなんですけど、なぜレポートが印刷されないのか。
しかも、作った段階では正しくレポートが印刷されていたはずなのに、いつからかレポートが正しく印刷されなくなってしまいました…。
いろいろ調べたけど結局解決せず、最終的に自分が解決した方法をご紹介します。

解決方法1.レポートを開くときにフォームを隠す

後ろのフォームが印刷されてしまうのであれば、フォームを見えなくしてしまえばいい、という解決方法です。
他の方のブログなどでも紹介されている方法です。

例えばフォーム”frm_フォーム”から、レポート”rpt_レポート”を開くときに、

Docmd.openreport “rpt_レポート” , acPreview
forms!frm_フォーム.invisible = false

としてフォームを隠してしまいます。
そして、レポートを閉じるときには逆に

forms!frm_フォーム.invisible = true

としてフォームを表示してあげるという方法です。

この方法、私も試してみましたが、正直うまくいく時とうまくいかない時があります。
うまくいかない時は、リボンの「印刷」ボタンがグレーアウトして押すことができず、印刷ができません。

解決方法2.ドキュメントウィンドウオプションを「ウィンドウを重ねて表示する」にする

私は解決方法1では解決せず、これを試したところバシッと解決しました。

  1. 正常にレポートが印刷できず困っているaccdbを開きます。
  2. 【ファイル】→【オプション】を開きます。
  3. 【カレントデータベース】→【ドキュメントウィンドウオプション】を【ウィンドウを重ねて表示する】にします。
  4. すると、ちゃんとレポートが印刷できるようになりました。

あくまで個人的な推測なんですけど、ACCESS2007から追加された「タブ」にバグがあって、レポートが表示されても正しくレポートにフォーカス(?)が移動しないのかなぁと思いました。

これで絶対に解決するかは分かりませんが、同じように「レポートを印刷プレビューで表示して印刷すると後ろのフォームが印刷されるよ~」という方は一度お試しください。

あ、ちなみにACCESS2010 RuntimeにSP1を適用したものでも、同現象が解消することを確認しています。