VBA印刷のよく使う機能13選と印刷フォーム作成3例

印刷print-excel-vba 印刷

エクセルを使って失敗する事が多い印刷ではないですか?

A4サイズの紙に1ページが正確に印刷できないで無駄な2ページ目印刷された経験ありませんか?

その度に無駄な手間、時間も用紙もインクも無駄になりますのでVBAを使ってエクセル印刷自動化して作業効率化しましょう。

スポンサーリンク

VBA印刷では設定できない事もある

両面印刷に対応したプリンターを持っていいても、VBAで両面印刷の設定はできません。

下の図のように、プリンター自体の機能設定に関することになってしまうからです。

印刷ダイアログ
プリンター固有の設定はVBAでは設定不可

VBAで設定できる印刷に関する事は、印刷のページ設定で出来る事になります。

印刷ページ設定
VBAで設定可能
スポンサーリンク

VBA印刷で簡単な印刷設定のきほん

プリンター自体の機能設定画面を一発表示

まず最初に印刷をするVBAコードや印刷プレビューを最初に覚えなくてはいけないのですが、その前に先ほどのプリンター自体の機能設定に関するページが多くの方に見ていただいています。

なぜなら面倒だからです!

プリンター自体の機能設定を行う画面(ダイアログボックス)を表示させるには下記の手順を行わなくてはいけません

  1. ワークシートの「ファイル」をクリック
  2. 「印刷」をクリック
  3. 「プリンターのプロパティ」をクリック

このように3回もクリックしないとプリンター自体の設定画面が表示されません。

コマンドボタンにたった1行、VBAコードを書き込めば1回のクリックでプリンター自体の機能設定画面が表示されます。

印刷プレビュー

エクセルで作業が終わったら印刷をしますが、思い通りに印刷できるか?見切れていないか?そう思いながら確認の為に印刷プレビューを表示することがあります。

VBAを使わなくても比較的簡単に印刷プレビューは見られるので、個人的にはほぼ使っていないVBAでの印刷プレビューですが、VBAコードの書き方を間違えるとエクセル強制終了しか方法が無くなるので、ご注意ください。

印刷開始ページ・終了ページ・枚数設定(セル連動)

VBAで印刷開始ページはFrom、印刷終了ページはTo、印刷枚数はCopiesをそれぞれPrintOutメソッドを使って設定することができます。

せっかくVBAで印刷設定をするならば、FromもToもCopiesも数字でVBAコードを記載するのではなく、セルの値を取得させることで自動化できてしまうのです。

印刷範囲を指定する

印刷したい範囲を指定することにより失敗しない印刷ができます。

いつも決まった範囲を印刷するならばPrintAreaにセル番地を範囲指定すればいいし、マウスで選択中のセルの範囲を印刷することもできますよ。

印刷範囲しては基本なので忘れずにVBAコードを書き込んでおきましょう。

用紙の向きを指定する

エクセルで印刷する時の用紙の向きはいつも同じですか?

印刷物によって縦方向だったり横方向だったりするのに、印刷する時に用紙の向きを設定忘れて紙の無駄になった経験ありますよね。

そんな失敗をしないように用紙の向きをVBAコードで記載しておけば確実ですよ。

PageSetup.Orientationで縦か横かを設定するだけです。

用紙サイズを指定する

いつものように印刷したらA4用紙だった為に、はみ出て印刷された経験ありませんか?

家庭用プリンターならセットできる用紙が1種類なので、印刷前に用紙を確認すればいいのですが、職場では複合機だったりするので失敗する事よくあります。

そこで用紙サイズを指定するVBAコードを書き足せば安心ですよ。

PageSetup.PaperSizeで設定する用紙サイズを記載するだけ。

印刷ページの余白を設定する

1枚の紙を最大限使用する為に余白を少なくして印刷することありませんか?

印刷ページで設定できますが、上下左右4か所修正するの結構面倒ですよね。

そこで余白の設定ができるVBAコードを書き足せば楽ちんです。

PageSetupで上下左右全ての余白設定をしておきましょう。

ページ番号を自動付与(ヘッダー・フッターの設定)

印刷ページの一番下(フッター部分)に本や雑誌のようにページ数を自動付与させたい時ありませんか?

わざわざ自分でページの一番下に記載するのはとても面倒なので、自動的にページ番号が付与されるように設定できます。

PageSetup.CenterFooterで簡単にできますよ。

ヘッダーに日付や社名を自動表記

用紙の一番上をヘッダーと言い、ここに日付や社名など常に記載したい文字などを自動表示させることができます。

もちろん好きなフォントを指定したり、改行して2行表示させることも簡単です。

PageSetup.RightHeaderで設定しましょう。

印刷倍率を指定する

正直画面サイズで倍率指定をすることはあるのですが、印刷時に倍率を指定して使った事がありません。

ただエクセルVBAの印刷設定にもあるので、ココでもご紹介します。

決まった倍率指定よりも下の印刷倍率自動調整の方は使っていますけどね。

印刷倍率を自動調整する

印刷範囲が用紙からはみ出ていないか確認繰り返しながらプレビューを見たり、倍率調整するの面倒じゃないですか?

1ページ内に収める為に、用紙の向きだけ指定して印刷倍率は自動調整にして楽しませんか?

FitToPagesを使って印刷倍率自動化できますよ。

VBA白黒印刷設定でインクやトナーを節約して印刷

コロナ禍で経費削減・コスト削減って毎日言われても限度がありますが、印刷する時にインクやトナーを少しでも節約して購入サイクルを長くしたいと思いませんか?

プリンターのエコモードの設定があれば当然行いますが、エクセルで作成した資料なども僅かながらVBA設定をしてインクやトナーの使用量を減らしましょう。

PageSetupを使って白黒印刷設定ができます。

印刷時にDIV/0!や#N/Aのエラー値は自動的に空欄変換

当たり前ですがエクセルを使う上で、セルに数式などが入っていて計算させていますが、#DIV/0!や#N/Aなどのエラー値がそのまま印刷されてしまい見苦しい思いをしたことありませんか?

印刷する時だけ、このエラー値を自動的に空白にしたりダッシュ(-)にVBAコードで置き換えられます。

PageSetupを使って簡単に設定できるので、VBAコードに書き足しておくと便利ですよ。

スポンサーリンク

印刷活用例

VBA印刷をするのに様々な組み合わせをして、実際に作成した「印刷フォーム」の作成例です。

エクセルからエクセルへ差し込み印刷

シート1に印刷したいリスト(名前や商品名)がリスト化されていて、シート2に記入欄や値札などのエクセルファイル。

タックシールなど手間もコストもかかるし、手書きで書くのは無理。

差し込み印刷ボタンを作って500件のリストも、たった1秒で印刷開始できました。

印刷枚数入力テキストボックス付きVBA印刷フォーム

印刷したい枚数を自由に指定して印刷しできたらもっと便利になりませんか?

印刷したい枚数をテキストボックスに入力して印刷実行ボタンをクリックすると印刷完了できる印刷フォームを作ってみましょう。

作るのは比較的簡単でSelect CaseステートメントとPrintOutメソッドを組み合わせればできますよ。

入力漏れ自動チェック機能付き印刷コマンドボタン

エクセルで作成した資料など印刷した後に入力漏れを見つけてしまって、やり直した経験ありませんか?

見積書や請求書などで宛名入力忘れなど失敗したくないので、印刷実行したら自動的に入力漏れをチェックして見つけたら印刷ストップする機能をVBAを使って付け加えましょう。

ifステートメントを使って指定したセルが空欄のままだったら、印刷キャンセルさせるVBAコードを書き加えるだけです。

印刷関連VBA
印刷
スポンサーリンク
参考になりましたらシェア宜しくお願い致します
Excel VBA