エクセルでVBAコード駆使してプログラムを組んで作ったユーザーフォーム。
成績表などで「高得点順に並べ替えを行った後で印刷を実行する」というプログラムを作り、印刷枚数もテキストボックスの入力値に応じてできるようにしました。
ところが!
一般的なインクジェットプリンター1台しかない環境の時は何の問題もなかったのですが、両面印刷対応のレーザープリンターを導入したらすぐに問題が発生!
用紙の指定、縦横の設定、余白の設定などはVBAで指定しましたが、VBAではプリンターの両面印刷の設定まではできないという事です。
その為に、プリンターのプロパティで両面印刷を設定することにより、印刷実行ボタンで対応可能になりました。
しかし!
共有パソコンなので当たり前なのですが、知らない間にプリンターのプロパティが変更されている時があり、両面印刷ができずに片面印刷で2倍の枚数の用紙を使ってしまった事が起きるようになてしまいました。

誤操作防止と作業時間短縮の為にユーザーフォームを使っているのに、印刷の設定の為にワークシート上で操作しては・・・って思いませんか?
ダイアログボックスを起動する
エクセルのセルの書式設定をする時に、ダイアログボックスを表示して詳細な設定を行います。
セルの書式設定のダイアログボックスとは、このような画面見た事ありますよね。
表示方法は2つあり、ひとつはワークシート上の任意のセルで「右クリック」をすると、
「セルの書式設定」をクリックするとダイアログボックスが表示されます。
もう一つの方法は、エクセルの上に表示されているリボンツールバーの各グループの右下をクリックするとすぐにダイアログボックスが表示されます。
これだけ拡大してもこんなに小さい部分なので、気づかないのが普通ですよね。
プリンターのダイアログボックス
プリンターのダイアログボックスを開くには、左上の「ファイル」➡「印刷」➡「プリンターのプロパティ」の順にクリックしていくとこのような画面(ダイアログボックス)が開きます。
ずいぶん遠回りしましたが、この印刷ダイアログボックス画面をコマンドボタンひとつで表示させることができるんです。
Private Sub CommandButton1_Click()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
- コマンドボタン1が押されたら
- プリンター設定のダイアログを表示する
- マクロ終了
このVBAコードを書いて実行するとこのような画面が表示されます。
ここで最初に選択されているプリンターが、登録されている通常使用するプリンターなので、他のプリンタたーに変更することも可能ですし、選択されたプリンターで設定(S)ボタンを押せば、プリンターのプロパティが表示されるので設定を変更することができます。
設定が終われば、OKボタンでプリンター設定ダイアログボックスを閉じられます。

これで、共有パソコンなどでもプリンターの設定さえ忘れなければ、失敗しないで印刷できますよね。
さらに、VBAコードで用紙を事前に横方向で設定しておけば、わざわざダイアログを表示させなくても必ず用紙を横向きで、用紙サイズも印刷設定できます。
印刷関連VBA
- エクセルからエクセルへ差し込み印刷
- 印刷プレビュー
- 枚数指定して印刷実行
- セル番地の値を取得して開始・終了ページ設定
- プリンター選択・設定
- 印刷範囲指定・選択中範囲印刷
- 用紙の向きを指定する
- 用紙サイズを指定する
- 印刷倍率を指定する
- 印刷倍率を自動調整に設定して1ページ内に収めて印刷
- インク・トナー節約設定
- ページ設定で上下左右の余白を指定する
- ヘッダーとフッターを指定する
- フッターの開始ページ数指定と総ページ数表示
- ヘッダー2行表示や日時表示
- 数式エラーを自動的に空白にして印刷する
- 入力漏れがあったら印刷を自動停止する