プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (6件)

こんにちは。

興味があったんで追試してみました。
下記の順に並べ変えると動きます。

For i = 1 To 5
Range("D4") = i * 100
SendKeys "%c"
ActiveSheet.PrintPreview
Next

恐らく、プリントプレビューはモーダルで、ActiveSheet.PrintPreview を発行後は、プリントプレビューを閉じるまで、マクロが停止すると思われます。
↑で動くのは、キーを先送りし、開いたと同時に閉じるので、マクロが止らずに進んでいるだけで、動作としては不安定(端末によってはうまくいかない。)です。
実際↑を走らすと、アクティブセルに不明な空白が入力され、入力待ち状態でマクロが終了します。

なにかしらの事情があってのご質問とは思いますが、やはりプリントプレビューはユーザに閉じて頂くのが本筋ではないでしょうか。
    • good
    • 1
この回答へのお礼

ありがとうございました。キーを先送りすることで何とかクリアできました。
事情は、No3さんへのコメントに記載しました。

> プリントプレビューはモーダルで、> ActiveSheet.PrintPreview を発行後は、プリントプレビューを閉じるまで、マクロが停止すると思われます。

では、先ほど(No1)のマクロで一度閉じるを押すと、あと4回は押さなくとも自動で閉じたのはなぜなんでしょう?

お礼日時:2005/04/04 16:40

#4 です。


クリアできたとのこと。良かったですね。

>あと4回は押さなくとも自動で閉じたのはなぜなんでしょう?
これは、手押しのキーが先送り1回目と同じ役割をし、
以降、ループ1回目の SendKeys "%C" はループ2回目の先送りキーとして、ループ2回目の・・・・
と順じ先送りキーと解釈されて動いたと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/04 19:34

No.1のものです。



何か回答増えてますが、
駄目でしたら、
SendKeys "%c" の下に
SendKeys "{ENTER}"
を下に書くとかは如何でしょう。

今テストできないので何ともいえませんが、
過去に似たようなものを作ったので
出来る様な気がするのですが・・・。
そうでなければごめんなさい。
興味がありますので頑張ってみてください。
一応自信なしに変えておきます^^;。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2005/04/04 19:34

>「印刷」ボタンを押さなくとも閉じるにはどう書けばいいのでしょうか?



やろうとしていることが、VBAでは、無理と思いますよ。

「閉じる」という意思を何をもってExcelに伝えるのですか?

プレビュー画面は、モーダルで開かれて、「閉じる」ボタンまたは、そのショートカットキー

で、フレビューを閉じない限り、VBAコードは、実行出来ないと思います。

ですから、PrintPreview の下に SendKeys を記述しても、手動で閉じてから実行される

と思います。

何のためにそのようなことが、必要なのでしょうか? 必要ないと思うが・・・

この回答への補足

> 何のためにそのようなことが、必要なのでしょうか? 必要ないと思うが・・・

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

補足日時:2005/04/04 16:33
    • good
    • 0

テストしてませんが、


SendKeys "%C", True
でいかがでしょうか。
    • good
    • 0

印刷設定関連のマクロはちょっと頭が悪いと思うのですが、


ボタンを操作する処理を書きます。

「閉じる」ならCアンダーバーだと思いますが
(閉じるボタンの横にあるショートカットキー)
.SendKeys "%c"
の様になります。%はAltという意味です。
Ctrl+ なら "^" を使用します。
ちなみにタブ移動は"^{TAB}"です。
どちらにしろSendKeysステートメントで書きます。
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
以下でテストしてみました。

Sub TEST01()
For i = 1 To 5
Range("D4") = i * 100
ActiveSheet.PrintPreview
SendKeys "%C"
Next
End Sub

最初の一回はやはり閉じるを押さないとプレビューが終了しないようです。
一度押すと2~最後までは自動でプレビューを閉じ先に進みます。
どこが悪いのでしょうか?

お礼日時:2005/04/04 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A