QA@IT

Excel ファイルの印刷設定を、印刷処理とは別に行いたい

7727 PV

Windows7 SP1 / Excel 2010

ボタンを押すとシートを印刷するマクロで、印刷設定ダイアログを表示して設定実施 -> 印刷 という処理を実装しています。

印刷したい範囲はシート中に散在しているので、印刷処理本体は


Step1 シートの印刷範囲(ActiveSheet.PageSetup.PrintArea)を設定
Step2 印刷(ActiveSheet.PrintOut)


の繰り返しを、必要な範囲ぶん行っています。

印刷設定は初回だけでいいので、


Step0 最初に印刷設定ダイアログを表示して、プリンタと用紙サイズ、印刷の白黒/カラーなどを指定
Step1 印刷範囲を設定 ~ Step2 印刷 を必要な範囲分繰り返し(このときの印刷設定は Step0 のものが有効になる)


としたいのですが、Application.Dialogs(xlDialogPrint).Show だとダイアログから印刷することになってしまいます。

このような制御は可能でしょうか?
もし無理であれば、先に Excel の[ファイル] - [印刷] を開いて設定をしておいてもらうようにするしかないのですが、できればシートの中だけで([ファイル]メニューを開かずに)制御したいと思っています。

ご存知でしたら(無理、という回答でも)ご教示ください。

よろしくお願いいたします。

回答

Application.Dialogs(xlDialogPrint).Show だとダイアログから印刷することになってしまいます。

Application.Dialogs(xlDialogPrinterSetup).ShowApplication.Dialogs(xlDialogPageSetup).Show を使うのはダメなんでしょうか?

OKかキャンセルかはBooleanが返ってくるので判断できますが、ダイアログが出すぎるとだめなんですかね?

編集 履歴 (0)
  • ありがとうございます。xlDialogPrinterSetupの存在は知りませんでした。というか、このダイアログの存在を知りませんでした…Dialogsの定数を見直したらあっさりありました。私の調査不足でした。これでなんとか実装できそうです。 -

そのマクロの一連の流れで処理しなくてもページレイアウトリボンを開いてページ設定

または拡大縮小印刷の枠内右下の\向きの小さい矢印をクリックすればページ設定

ダイアログが表示されますがそれではだめでしょうか?

編集 履歴 (0)
  • ありがとうございます。確かに[ファイル] - [印刷] を開かなくても、こちらの操作でできますね。(ユーザーにページ設定を先にしておいていただけるなら、ですが) -
(1)マクロの記録開始
(2)シート上で右クリック(コンテキストメニュー表示)
(3)ページ設定をクリック
(4)OKをクリック
(5)マクロの記録終了

でページ設定の為のマクロが作成されるので
後は適当に修正するとよいです。

編集 履歴 (0)
  • 回答ありがとうございます。

    決まった設定をしたいだけであればもちろんそれでよいのですが、今回は印刷前にユーザーが自由に設定を変更したいのです。
    PrintOut が1回なら単に Application.Dialogs(xlDialogPrint) を使えばいいのですが、指定したい印刷範囲はシートの中にばらばらにあるので、印刷処理が複数回必要になっています。

    やはり無理なのでしょうか。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。