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での印刷プレビューですが、VBAコードの書き方を間違えるとエクセル強制終了しか方法が無くなるので、ご注意ください。

あわせて読みたい
エラーに注意!強制終了させないエクセルVBAで印刷プレビュー方法 印刷プレビューをわざわざVBAでやる必要ある?って思いませんでしたか? 使用頻度が高い印刷プレビューなので、VBAを使わなくても簡単に表示できるように3つも表示方法...

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

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

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

あわせて読みたい
印刷開始ページと終了ページと枚数をセルの値にリンクさせる 印刷をVBAコードを書き込んで実行するならば、コマンドボタン1回で印刷実行したいから取り組んでいるのですよね。 どうしても難しいのが、印刷を開始するページ番号「Fr...

印刷範囲を指定する

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

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

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

あわせて読みたい
VBAで印刷範囲登録や選択した範囲を印刷範囲に設定する方法 エクセルで印刷した時に、範囲指定を忘れたり、設定したはずなのになぜかはみ出てしまったりした経験ありませんか? 共有プリンターや共有パソコンでは最後に使った人が...

用紙の向きを指定する

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

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

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

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

あわせて読みたい
エクセル印刷時の用紙の向きを横方向にVBAで設定する方法 エクセルで表などを作って印刷する事ってよくある日常業務ですが、印刷したい範囲が用紙に収まっていない失敗ありませんか? 印刷する前にページ設定や印刷プレビューを...

用紙サイズを指定する

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

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

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

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

あわせて読みたい
エクセルでA4用紙に固定して変更できないようにする方法 エクセルで印刷の位置がずれたり、用紙からはみ出たり、必要ないページが印刷されたりして困ったことありませんか? 特に共有プリンターや複数プリンターが選択できる場...

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

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

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

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

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

あわせて読みたい
印刷のページ設定でVBAで自動的に余白無しに設定する エクセルで印刷の位置がずれたり、用紙からはみ出たり、必要ないページが印刷されたりして困ったことありませんか? 特に共有プリンターや複数プリンターが選択できる場...

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

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

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

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

あわせて読みたい
VBAで印刷ページ設定のヘッダーとフッターを指定する エクセルで作成した内容を印刷する時に、はみ出てしまったり、必要なところが印刷されていなかったりして失敗した経験ありませんか? 印刷ページ設定をVBAであらかじめ...

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

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

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

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

あわせて読みたい
エクセルVBAで印刷で用紙の上部右端に日付と社名を2行表示する方法 印刷する時に用紙の上部右端に自動的に表示させたいことありませんか? 今日の日付や会社名などは毎回入力するのは面倒なので、ページ設定のヘッダーにVBAを使って自動...

印刷倍率を指定する

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

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

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

あわせて読みたい
VBAで印刷のページ設定の倍率を設定する方法 エクセルで印刷する時にページによって印刷する範囲が異なるので、可能な限り用紙いっぱいに印刷したいと思いませんか? だからと言って毎回1枚1枚ページ設定をするのは...

印刷倍率を自動調整する

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

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

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

あわせて読みたい
印刷倍率を自動調整に設定して1ページ内に収めて印刷するVBA 印刷範囲が用紙からはみ出ていないか確認繰り返しながらプレビューを見たり、倍率調整するの面倒じゃないですか? 1ページ内に収める為に、用紙の向きだけ指定して印刷...

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

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

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

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

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

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

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

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

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

あわせて読みたい
セルの値が数式エラー値の時にはVBAで自動的に空欄にして印刷する方法 当たり前ですがエクセルを使う上で、セルに数式などが入っていて計算させていますが、#DIV/0!や#N/Aなどのエラー値がそのまま印刷されてしまい見苦しい思いをしたことあ...

印刷活用例

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

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

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

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

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

あわせて読みたい
住所録リスト一覧シートから別のシートの表へ差し込み印刷するVBA エクセルシートに名簿や商品リストを一覧にまとめて順番に記載している事があり、このリストを別のエクセルシートで作成してある表などに移し替える「エクセルからエク...

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

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

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

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

あわせて読みたい
印刷枚数入力テキストボックス付きVBA印刷フォームを作る 印刷したい枚数を自由に指定して印刷しできたらもっと便利になりませんか? アイキャッチ画像(上の図)のように、印刷したい枚数をテキストボックスに入力して印刷実行...

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

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

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

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

あわせて読みたい
VBAで入力漏れを自動チェックしてから印刷する方法 エクセルで作成した資料など印刷した後に入力漏れを見つけてしまって、やり直した経験ありませんか? 見積書や請求書などで宛名入力忘れなど失敗したくないので、印刷実...
印刷関連VBA
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次