VBAで印刷する前にプリンターを選択・設定をする

Excel-VBA 印刷

エクセルでVBAコード駆使してプログラムを組んで作ったユーザーフォーム。

成績表などで「高得点順に並べ替えを行った後で印刷を実行する」というプログラムを作り、印刷枚数もテキストボックスの入力値に応じてできるようにしました。

ところが!

一般的なインクジェットプリンター1台しかない環境の時は何の問題もなかったのですが、両面印刷対応のレーザープリンターを導入したらすぐに問題が発生!

用紙の指定、縦横の設定、余白の設定などはVBAで指定しましたが、VBAではプリンターの両面印刷の設定まではできないという事です。

その為に、プリンターのプロパティで両面印刷を設定することにより、印刷実行ボタンで対応可能になりました。

しかし!

共有パソコンなので当たり前なのですが、知らない間にプリンターのプロパティが変更されている時があり、両面印刷ができずに片面印刷で2倍の枚数の用紙を使ってしまった事が起きるようになてしまいました。

<span class="fz-12px">とりっぷぼうる</span>
とりっぷぼうる

誤操作防止と作業時間短縮の為にユーザーフォームを使っているのに、印刷の設定の為にワークシート上で操作しては・・・って思いませんか?

スポンサーリンク

ダイアログボックスを起動する

エクセルのセルの書式設定をする時に、ダイアログボックスを表示して詳細な設定を行います。

セルの書式設定のダイアログボックスとは、このような画面見た事ありますよね。

セルの書式設定ダイアログ
セルの書式設定ダイアログボックス

表示方法は2つあり、ひとつはワークシート上の任意のセルで「右クリック」をすると、

セルの書式設定表示方法
右クリックで表示するので「セルの書式設定」をクリック

「セルの書式設定」をクリックするとダイアログボックスが表示されます。

もう一つの方法は、エクセルの上に表示されているリボンツールバーの各グループの右下をクリックするとすぐにダイアログボックスが表示されます。

ダイアログボックス
普通なら気づかない小さい部分

これだけ拡大してもこんなに小さい部分なので、気づかないのが普通ですよね。

プリンターのダイアログボックス

プリンターのダイアログボックスを開くには、左上の「ファイル」➡「印刷」➡「プリンターのプロパティ」の順にクリックしていくとこのような画面(ダイアログボックス)が開きます。

プリンターのダイアログボックス
エクセル2016、Canon iP4600を使用例

ずいぶん遠回りしましたが、この印刷ダイアログボックス画面をコマンドボタンひとつで表示させることができるんです。

プリンターのダイアログボックス表示

Private Sub CommandButton1_Click()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. プリンター設定のダイアログを表示する
  3. マクロ終了

このVBAコードを書いて実行するとこのような画面が表示されます。

VBAコードで表示されたプリンターダイアログ
VBAコードで表示されたプリンターダイアログ

ここで最初に選択されているプリンターが、登録されている通常使用するプリンターなので、他のプリンタたーに変更することも可能ですし、選択されたプリンターで設定(S)ボタンを押せば、プリンターのプロパティが表示されるので設定を変更することができます。

設定が終われば、OKボタンでプリンター設定ダイアログボックスを閉じられます。

とりっぷぼうる
とりっぷぼうる

これで、共有パソコンなどでもプリンターの設定さえ忘れなければ、失敗しないで印刷できますよね。

さらに、VBAコードで用紙を事前に横方向で設定しておけば、わざわざダイアログを表示させなくても必ず用紙を横向きで、用紙サイズも印刷設定できます。

印刷関連VBA