• ベストアンサー

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

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

  • moooon
  • お礼率70% (118/167)

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

  • ベストアンサー
  • 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~最後までは自動でプレビューを閉じ先に進みます。 どこが悪いのでしょうか?

関連するQ&A

  • マクロで呼び出したプレビュー画面から印刷できない

    マクロで呼び出したプレビュー画面から印刷できない エクセル2010です。 下記のマクロで呼び出したプレビュー画面から印刷できません。 Sub test()   ActiveSheet.PrintPreview End Sub で呼び出したプレビュー画面から、印刷するために一番左上の「印刷」をクリックすると 実行時エラー1004 WorksheetクラスのPrintPreviewメソッドが失敗しました。 となってしまいます。 何がわるいのでしょうか?別のパソコンのエクセル2016では問題なく印刷できます。 頭をかかえています。

  • エクセル2010での印刷プレビュー

    エクセル2010での印刷プレビューを確認する場合に、画面の左側には印刷設定が表示され右側には印刷プレビューの表示ボタンが表示されます。 私としては印刷プレビューが見たいので印刷プレビューの表示ボタンを押さなくても最初からプレビューを見られるように設定したいと思います。 可能なら教えて頂きたいのですが。

  • 複数ブックの印刷プレビューの方法を教えてください。

    VB6.0にてエクセルのブックを2つ作成し、 最後にそのBook1とBook2を同時に印刷プレビューで表示させたいのですが Book1.Worksheets.PrintPreview Book2.Worksheets.PrintPreview にするとBook1の印刷プレビューを閉じないと Book2の印刷プレビューが表示されません。 Book1とBook2を同時にプレビュー表示させる方法を どなたかご存知でしたら教えてください。 よろしくお願いします。

  • ブラウザ上でEXCELの印刷プレビューをする方法は?

    通常、エクセルで「印刷プレビュー」をする場合、ツールバーの「印刷プレビュー」を選択するか、VBAマクロで"ActiveSheet.PrintPreview"を組み込んでも行うことができますが、ブラウザ上で開いたエクセルの印刷プレビューを行う方法を教えて下さい。

  • VBAで印刷プレビューを閉じる時に別シートに移動したい

    エクセルで、 (1)入力画面(シート1) (2)印刷用画面1(シート2) (3)印刷用画面2(シート3) と1つの入力シートから2つのシートへ値をリンクさせ 表示しているものを作りました。 入力画面に「印刷ボタン1」「印刷ボタン2」を作成し、 「印刷ボタン1」を押すと、(2)印刷用画面1の印刷プレビューを表示するように ボタン押下のイベントに Sheets(シート2).Select ActiveWindow.SelectedSheets.PrintPreview と記述して、印刷プレビューを表示するようにしました。 その後、印刷プレビュー画面にて「閉じる」を押したり、ESCを押すと、 シート2が表示されます。 これをシート1の入力画面に移動させたいんです。 印刷プレビューを閉じた後に入力画面に戻りたいのですが、 どうしたらよいのか分かりません。 「印刷プレビューが閉じた」というイベントを取得する方法が あるのかも調べきれず、どうしたらいいのか困っています。 解決する方法がありましたら教えて下さい。

  • エクセル2007「マクロ 印刷」について

    質問の仕方がおかしかったらスイマセン 前任者が作ったエクセルで ボタンを押せば印刷するもの(明細等) がプレビューで上がってきます。このとき明細が300件あったら 300件分上がってくるのですが、たとえば全件数に共通する 日付等の間違いがあった場合300件分プレビューを閉じていかな ければならず大変です。 今はこんな風になっています  Sheets("明細").PrintPreview プレビュー画面は必要なので例えば1件目のみだけプレビューが 上がってきて確認できるようにはできないのでしょうか? 前任の方に来ていただいて(退職し他企業に就職済み)作って もらうわけにはいかず、詳しくないものばかりが頭を抱えています。 間違わずにボタンを押せば済む話なのですが・・・。上記のような 事が可能なら教えて下さい。

  • Excelの印刷時にプレビューが出る現象が!

    エクセルのシートを印刷しようと思い画面上のプリンタのボタンを クリックしたところ、印刷プレビューが表示されてしまいます。 先日までは印刷ボタンを押せばプレビューは表示されず印刷物が出てきたのですが、 (オフィスではない)ソフトをインストールしてからこのような現象がおきるようになりました。 原因は何なのでしょうか?やはりソフトのインストール? 今まで通りプレビューを表示させずに印刷する方法はあるのでしょうか? プレビュー画面から印刷することはできるのですが、 出す必要のないプレビューが毎回出てきて、大変気になります。。。

  • Excelで任意の範囲の印刷プレビュー

    こんにちは。 Excelで、印刷プレビューのボタンを押すと、 印刷プレビューは一番最初のページを表示します。 これを、印刷プレビューボタンを押したときに、 アクティブせるのあるページを表示させたいのですが、 なにか方法はありますでしょうか? 印刷プレビュー画面で、 何回も「次ページ」ボタンを押すのがとても面倒なのです・・・(汗) 何かいい方法、楽な方法がありましたら教えてください。 よろしくお願いします。

  • 印刷プレビュー エクセル2010

    エクセルの2010を使うようになりました。 印刷プレビューに関して教えてください。印刷のボタンを押せば、横に印刷の画面が出てくるのですが、それが印刷プレビューなのでしょうか? また、拡大して、一部を見ることができるのでしょうか?2003では、虫眼鏡のようなもので拡大して出来たと思うのですが。。。御教示下さい。

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

専門家に質問してみよう