次の方法で共有

Access2007でレポート印刷中の印刷中ダイアログを表示しない方法はありませんか?

Anonymous
2010-11-22T05:21:41+00:00

レポートの印刷時に「印刷中」ダイアログが表示されますが、

特定の場面でこれを表示しないでほしいという要望がありました。

検索してみましたがそれらしい情報が見つかりません。

どなたか表示しない方法をご存知の方がおられましたら、

ご教授願えませんでしょうか。

よろしくお願いします。

尚、表示しないのが無理なら印刷中ダイアログの位置を画面の隅に

移動する方法でも結構です。よろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-11-25T06:07:43+00:00

こんにちは。

XPだったら下記で対応できませんでしょうか。

(私の方では試していないのですが…)

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

Public Sub TestProc()

  LockWindowUpdate GetDesktopWindow()

  DoCmd.OpenReport "Report1", acViewNormal

  LockWindowUpdate 0&

End Sub

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

9 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-11-24T16:52:19+00:00

    まぁ、そうですね。GetObjectで参照してますからその時点でVisible=Trueなんですね。なので意図的にVisible=Falseとしたわけです。

    GetObjectで参照したAccess.Applicationオブジェクトのレポートを表示させようとするならば、Visible=Falseでは当然無理で、

    ゆえにアプリケーションウインドウも表示されているということだと思います。

     .Visible = True ←GetObjectを用いているから、必要がない

     .DoCmd.OpenReport "report01", acViewPreview, , , acDialog ←ダイアログモードだからレポートを開いて、中の人はここで待機している

     .Visible = False ←レポートが閉じてから実行される

    ちょっとあとから気が付いたのですが、GetObject/CreateObjectで参照した場合、UserControlプロパティをTrueにしなければ印刷中ダイアログは表示されないようです。

    お手隙の時にでも、ご確認くださいな。

    Win32APIでウィンドウ表示を制御することで、アプリケーションウインドウを非表示にしつつレポートウインドウを表示させるのはできたけど、ちょっと調子が悪かった。

    環境によるものかも知れない。今回はSetWindow関数を使ってみました。

    API使わずになんとかとした場合、プレビューは親accdbで表示させて、印刷は子accdbでさせてしまうのもありかなと思ったりして。

    ただこの場合プレビューされた内容と違うものが印刷される可能性について手当をしてあげないとならないかな。

    印刷中ダイアログを直接に処理できればよいのですけど、たぶんプリンタ側にすでに制御が移っていて、中の人はその時点で待機状態にあるから、

    accessからの制御は難しいんじゃないかなぁと解釈中。制御に係るコストとリスクが高い気がしたので触れないことが得策ではないかと思いはじめたところ。.

    Office オートメーション サーバーの GetObject および CreateObject の動作

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2010-11-24T20:28:55+00:00

    レポート印刷時の "印刷中" ダイアログを抑止する方法 | YU-TANG's MS-Access Discovery

    http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptSuppressPrintingDialog.html

    Access 2003 でしか動作確認していません。2007 で動くかどうか、不明です。動かなかったら悪しからず。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2010-11-24T08:14:40+00:00

    お返事ありがとうございます。

    試してみたところ、確かに印刷中のダイアログは出なくなりました。

    しかしながら、プレビューだと何も表示されないという問題がありました。

    どうやら.Visible = Falseが原因のようで、プレビュー時は

     .Visible = True

     .DoCmd.OpenReport "report01", acViewPreview, , , acDialog

     .Visible = False

    とすればプレビューが表示されるのですが、今度はプレビューの後ろに

    Access本体が現れるという問題が起きました。

    これはどうしようもないことでしょうか。

    何かご存知でしたらお教えいただきたくよろしくお願いします。

    ご回答は大変参考になりました。ありがとうございました。

    尚、先に「回答としてマーク」をクリックしてから返信しようとしたら

    何か警告が出たので、あわてて解除してしまいました。

    このフォーラムで質問するのは初めてで勝手がわからず申し訳ありません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2010-11-22T13:23:44+00:00

    こんばんは

    APIとかでできるかなぁと思ったのだけれども、ちょっと厄介そうで糸口も見出せなかったから、ちょっと視線を変えて考えてみました。

    不可視なインスタンスならダイアログが見えないかも。もしかするとマシン環境によっては何か別のものが見えるかもです。

    Private Sub スペシャルなレポート印刷_Click()

       Dim accApp As Access.Application

       Set accApp = GetObject(CurrentProject.Path & "\report.accdb", "Access.Application")

       With accApp

           .Visible = False

           .DoCmd.OpenReport "report01"

           .Quit

       End With

       Set accApp = Nothing

    End Sub

    runtimeに対応できなくなるけど、CreateObjectも使えそうな感じ

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません