Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : その他)
レポートの印刷について
投稿日時: 22/11/02 00:09:25
投稿者: Watanabe-45

お世話になります。
 
住所録フォームからレポートを立上げ封筒へ直接印刷できるようなフォームを作成したところ、出力したいレポートが印刷されるのではなく、なぜか住所録フォームが印刷されてしまう。
 
住所録フォームに下記コードを使い、プレビューで確認して印刷を実行するようにしております。
印刷プレビューまでは予定どおり表示されておりますが、プレビュー画面から印刷を実行するとプレビュー画面とは異なる住所録フォームが印刷されてしまうという状況です。
ご教授いただきたくお願いいたします。
 
Private Sub コマンド93_Click()
DoCmd.OpenReport "R_封筒印刷(長3)", acViewPreview
 
End Sub

回答
投稿日時: 22/11/02 13:53:11
投稿者: hatena
投稿者のウェブサイトに移動

リポンメニューの印刷ボタンをクリックしたときに、想定外のフォームが印刷されるという現象ですよね。自分も経験したことがあります。
 
対策してと、レポートをプレビューするときにフォームを非表示にする、レポートのプレビューを閉じるときにフォームを再表示するという設計にしました。
 
フォームのコード

Private Sub コマンド93_Click()
    DoCmd.OpenReport "R_封筒印刷(長3)", acViewPreview
    Me.Visible= False
End Sub

 
レポートのコード
Private Sub Report_Close()
    If CurrentProject.AllForms!!フォーム名.IsLoaded Then
        Forms!フォーム名.Visible = True
    End If
End Sub

 
複数のフォームが開いている場合があるなら、
 
標準モジュール
Sub FormsVisible(b As Boolean)
    Dim frm As Form
    For Each frm In Forms
        frm.Visible = b
    Next
End Sub

フォームモジュール
Private Sub コマンド93_Click()
    DoCmd.OpenReport "R_封筒印刷(長3)", acViewPreview
    FormsVisible False
End Sub

 
レポートモジュール
Private Sub Report_Close()
    FormsVisible True
End Sub

回答
投稿日時: 22/11/02 13:56:58
投稿者: Suzu

引用:
DoCmd.OpenReport "R_封筒印刷(長3)", acViewPreview

 
ご提示の VBAは、
 レポート『R_封筒印刷(長3)』を印刷プレビューとして表示しなさい
 
と言う事であり、VBA にて印刷を行ってる訳ではありません。
 
 
引用:
プレビュー画面から印刷を実行

これが具体的にどのような手順で行われているのか判りませんので何とも言えませんが
(プレビューのウィンド内 右クリックから 印刷)
印刷プレビュー ではない、別の画面を印刷しているという事は、
 
その別の画面 今回であれば 『住所録フォーム』 がアクティブな状態となっており、
印刷プレビューに紐づいていない 操作メニュー(リボンや、クイックツールバー等)から
印刷を行えば、アクティブである 『住所録フォーム』 が印刷されるのは道理です。
 
1. 先の VBAを実行し、『住所録フォーム』がアクティブになっているという事は
 フォーム『住所録フォーム』の「ポップアップ」「作業ウィンドウ固定」が「はい」になっていませんか?
 
2. 印刷プレビューであれば 通常は、リボンは 【印刷プレビュー】タブが表示され、
  その中に、[印刷]があるはずです。
  印刷プレビューのはずなのに、【印刷プレビュー】タブが表示されないのであれば
  そのレポートが、ポップアップになっていませんか?

投稿日時: 22/11/03 12:30:36
投稿者: Watanabe-45

hatenaさん
投稿ありがとうございました。
>>想定外のフォームが印刷されるという現象ですよね。自分も経験したことがあります。
同じ現象の方がいてなぜか安心してしました。
複数フォームの立上げではなかった為、今回は印刷プレビュー起動時にフォームを閉じ、プレビューを閉じたときにフォームを立ち上げることで解決できました。
試行錯誤している際にこの方法を思い描いたのですが、自力でこのコードを検索などして用いることができませんでした。解決できました。ありがとうございました。
 
Suzuさん
投稿ありがとうございました。
@フォーム『住所録フォーム』の「ポップアップ」「作業ウィンドウ固定」はいずれも「いいえ」となっておりました。
ADoCmd.OpenReport "R_封筒印刷(長3)", acViewPreview⇒印刷プレビューが表示され、リボンは 【印刷プレビュー】タブが表示され、リボンの印刷ボタンをクリックすると「住所録フォーム」が印刷されてしまう。
(説明不足で申し訳ありません。)
このような状態となっておりました。