• ベストアンサー

エクセルのマクロで印刷プレビューを閉じる方法

印刷プレビューをだすなら PrintPreviewでわかるのですが、表示されたプレビュー画面を、自分で「閉じる」または「印刷」ボタンを押さなくとも閉じるにはどう書けばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • komet163
  • ベストアンサー率51% (22/43)
回答No.4

こんにちは。興味があったんで追試してみました。 下記の順に並べ変えると動きます。 For i = 1 To 5 Range("D4") = i * 100 SendKeys "%c" ActiveSheet.PrintPreview Next 恐らく、プリントプレビューはモーダルで、ActiveSheet.PrintPreview を発行後は、プリントプレビューを閉じるまで、マクロが停止すると思われます。 ↑で動くのは、キーを先送りし、開いたと同時に閉じるので、マクロが止らずに進んでいるだけで、動作としては不安定(端末によってはうまくいかない。)です。 実際↑を走らすと、アクティブセルに不明な空白が入力され、入力待ち状態でマクロが終了します。 なにかしらの事情があってのご質問とは思いますが、やはりプリントプレビューはユーザに閉じて頂くのが本筋ではないでしょうか。

moooon
質問者

お礼

ありがとうございました。キーを先送りすることで何とかクリアできました。 事情は、No3さんへのコメントに記載しました。 > プリントプレビューはモーダルで、> ActiveSheet.PrintPreview を発行後は、プリントプレビューを閉じるまで、マクロが停止すると思われます。 では、先ほど(No1)のマクロで一度閉じるを押すと、あと4回は押さなくとも自動で閉じたのはなぜなんでしょう?

その他の回答 (5)

  • komet163
  • ベストアンサー率51% (22/43)
回答No.6

#4 です。 クリアできたとのこと。良かったですね。 >あと4回は押さなくとも自動で閉じたのはなぜなんでしょう? これは、手押しのキーが先送り1回目と同じ役割をし、 以降、ループ1回目の SendKeys "%C" はループ2回目の先送りキーとして、ループ2回目の・・・・ と順じ先送りキーと解釈されて動いたと思います。

moooon
質問者

お礼

なるほど、ありがとうございます。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.5

No.1のものです。 何か回答増えてますが、 駄目でしたら、 SendKeys "%c" の下に SendKeys "{ENTER}" を下に書くとかは如何でしょう。 今テストできないので何ともいえませんが、 過去に似たようなものを作ったので 出来る様な気がするのですが・・・。 そうでなければごめんなさい。 興味がありますので頑張ってみてください。 一応自信なしに変えておきます^^;。

moooon
質問者

お礼

ありがとうございます。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

>「印刷」ボタンを押さなくとも閉じるにはどう書けばいいのでしょうか? やろうとしていることが、VBAでは、無理と思いますよ。 「閉じる」という意思を何をもってExcelに伝えるのですか? プレビュー画面は、モーダルで開かれて、「閉じる」ボタンまたは、そのショートカットキー で、フレビューを閉じない限り、VBAコードは、実行出来ないと思います。 ですから、PrintPreview の下に SendKeys を記述しても、手動で閉じてから実行される と思います。 何のためにそのようなことが、必要なのでしょうか? 必要ないと思うが・・・

moooon
質問者

補足

> 何のためにそのようなことが、必要なのでしょうか? 必要ないと思うが・・・ ええ、通常は必要ないですよね。 今回は、本来はプリントプレビューじゃなく印刷させるマクロなんです。 でもかなり分量があるのでテスト版は印刷じゃなくてプレビューで渡して、スライドショーのように画面の動きを見てもらい、OKがでれば「印刷」にかえるつもりでした。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.2

テストしてませんが、 SendKeys "%C", True でいかがでしょうか。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.1

印刷設定関連のマクロはちょっと頭が悪いと思うのですが、 ボタンを操作する処理を書きます。 「閉じる」ならCアンダーバーだと思いますが (閉じるボタンの横にあるショートカットキー) .SendKeys "%c" の様になります。%はAltという意味です。 Ctrl+ なら "^" を使用します。 ちなみにタブ移動は"^{TAB}"です。 どちらにしろSendKeysステートメントで書きます。

moooon
質問者

お礼

さっそくありがとうございます。 以下でテストしてみました。 Sub TEST01() For i = 1 To 5 Range("D4") = i * 100 ActiveSheet.PrintPreview SendKeys "%C" Next End Sub 最初の一回はやはり閉じるを押さないとプレビューが終了しないようです。 一度押すと2~最後までは自動でプレビューを閉じ先に進みます。 どこが悪いのでしょうか?