【保存版】Excelマクロで印刷を自動化しよう!

ようこそ♪ささぽんのExcel教室へ。
今回は 「Excelマクロで印刷を自動化する方法」 をお届けします!
日々の書類を印刷する作業、地味に時間がかかってしまいますよね…
そんなとき、マクロで印刷を自動化することで、作業削減・時間短縮ができてとても便利です。
この記事では、マクロを使った印刷の基本構文から、すぐに使える具体例、ちょっとした応用テクまでまとめてご紹介します!

この記事は以下のような方におすすめです!
・定期的に書類印刷を行う方
・担当者ごとに印刷設定が違い統一したい方
・印刷まで一気通貫で自動化したい方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
目次
1.印刷マクロの基本構文
印刷マクロを使いこなすために、まず基本の構文をしっかり理解しておきましょう。
ここでは、一番シンプルな印刷マクロの書き方と、最低限覚えておくと便利なポイントを紹介します!
◼︎基本のPrintOut構文を知ろう
Excelで印刷をマクロ化する場合、もっともよく使うのが PrintOut という命令です。
例えば、今開いているシートをそのまま印刷したいときは以下のように書きます:
ActiveSheet.PrintOut
これだけで、アクティブシートが即座に印刷されます!
PrintOut は引数を指定するとページ範囲や部数を細かく制御できますが、基本は「どのシートを印刷するか」を指定するだけで動きます。
決まったシートだけを印刷したい場合は Sheets(“見積書”).PrintOut のようにシート名で指定することも可能です。
引数の詳細や範囲の設定は次の応用例で少しずつ紹介していきますので、まずは「PrintOut=印刷命令」と覚えておきましょう!
◼︎印刷プレビューを確認する方法
「いきなり印刷されるのはちょっと不安…」という場面もありますよね。
そんなときは、PrintPreviewを使えば、マクロで印刷設定を反映しつつ、実際に紙が出る前に仕上がりを確認することができます。
例えば、アクティブシートのプレビューを表示するには以下のように書きます:
ActiveSheet.PrintPreview
この一行で、手動で[ファイル]→[印刷]を開いたときと同じ画面が表示されます。
「印刷範囲がずれていないか」「ページ数は問題ないか」などをしっかりチェックできるので、最終確認してから印刷したい場合に便利です。
特定のシートを指定してプレビューしたいときは、以下のようにシート名を指定してください:
Sheets("見積書").PrintPreview
プレビューを上手に使って、身近な印刷業務を自動化してみましょう!
2.よく使う印刷マクロ【基本編】
ここからは、印刷マクロの具体的な活用例を見ていきます。
どれも日常業務でよく使うパターンばかりなので、気になるものからぜひ試してみてください!
◼︎アクティブシート・特定シートの印刷
一部すでに紹介したものもありますが、まずは一番基本的な印刷マクロをおさらいしましょう。
「今開いているシートだけ」や「特定の名前のシートだけ」を印刷したい場合は、これを覚えておけば十分です!
①アクティブシートを印刷する
一番シンプルなのが、アクティブシート(今開いているシート)を印刷する方法です。
ActiveSheet.PrintOut
これだけで、手動で[印刷]をクリックしたのと同じように印刷がされます。
マクロの最後に1行追加するだけで作業を自動化できるので、すでにマクロで自動化している処理があればその最後に付け加えてみてください。
②特定のシートを指定して印刷する
開いているシートに関わらず毎回同じシートを印刷したい場合は、シート名を指定しておくのがおすすめです。
例えば、「請求書」というシートを印刷する場合:
Sheets("請求書").PrintOut
このように書くことで、別のシートを開いていた時でも必ず指定したシートが印刷されるようになります。
◼︎複数シート・全シートの印刷
次に、複数のシートをまとめて印刷する方法をご紹介します。
複数シートを印刷する場合は、Sheets(Array(…)) を使います。
例えば「見積書」と「明細書」の2つをまとめて印刷する場合は、以下のように書きます。
Sheets(Array("見積書", "明細書")).PrintOut
シート名は必ず「”」で囲み、配列として渡すのがポイントです。
2つ以上のシートを指定する場合には、カンマで区切って必要な枚数分書くことで印刷できるようになります。
もし全てのシートを印刷する場合には以下のように書きます:
Sheets.PrintOut
小規模なファイルなら、この一行で全部まとめて印刷できるので便利です。
ただし、シート数が多い場合は想定を超える印刷量にならないよう、出力枚数に注意しましょう!
◼︎選択している範囲を印刷
最後にご紹介するのは、シート全体ではなく、必要な範囲だけを印刷する方法 です。
大きな表の中で、必要な部分だけ抜き出して印刷したいときに便利です!
指定した範囲だけを印刷する場合は、Range に対して PrintOut を使います。
たとえば「A1からC10の範囲」だけ印刷したいときは、以下のように書きます:
Range("A1:C10").PrintOut
もし、毎回範囲を選択してから印刷したいときは、Selection.PrintOut を使えば選択した部分だけをそのまま印刷できます。
Selection.PrintOut
このコードなら、マクロを実行する前に印刷する範囲を選択しておくことでその範囲が印刷されます。
ちょっとした資料の抜粋印刷にとても便利なので、ぜひ試してみてください!
3.よく使う印刷マクロ【応用編】
ここからは、もう1段階レベルアップした印刷マクロを紹介します。
ページ範囲や部数、印刷の向きなど、よくある印刷設定をマクロで自動化してみましょう。
◼︎印刷設定を変更して印刷
印刷マクロでは、PrintOut の引数を活用することで、ページ範囲や印刷部数、向きなどを細かく設定することができます。
必要な部分だけ抜粋して、自分の業務に合わせて使ってみてください!
①ページ範囲を指定する
例えば「1ページ目だけ印刷したい」場合は、以下のように From と To を設定します。
ActiveSheet.PrintOut From:=1, To:=1
②印刷部数を指定する
同じ書類を2部出したいときは、Copies を追加します。
ActiveSheet.PrintOut Copies:=2
③印刷の向きを変更する
表を横向きにして印刷する場合は、PageSetup を使って向きを変更してから印刷します。
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.PrintOut
今紹介した印刷設定は、組み合わせて指定することもできます:
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.PrintOut From:=1, To:=1, Copies:=2
必要な設定をうまく指定して、現場で使えるマクロを作りましょう!
◼︎PDFとして保存する
「紙に印刷する代わりに、PDFで保存してメールに添付する」という場面も多いですよね。
そんなときは、ExportAsFixedFormat を使うと、マクロで簡単にPDFを作成できます!
①基本の構文
たとえば、アクティブシートをPDFで保存したい場合は、以下のように書きます。
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\user\Desktop\見積書.pdf"
Filename には保存先のパスとファイル名を指定します。
②複数シートをPDFで保存する
複数のシートをまとめて1つのPDFにすることもできます。
例えば「見積書」と「明細書」を1つのPDFにする場合は、以下のように書きます。
Sheets(Array("見積書", "明細書")).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\user\Desktop\提案セット.pdf"
これで、2つのシートを1つのPDFにまとめて保存してくれます。
今回ご紹介した応用テクニックを使えば、手動での設定と同じような柔軟な設定で印刷を自動化することができます。
上手く活用して、日頃の作業時間の削減に役立ててください!
4.マクロ印刷の注意点
マクロで印刷を自動化し始めると、作業が一気に楽になる反面、思わぬミスが起こることもあります。
ここでは、特に初心者の方がつまずきやすいポイントと、トラブルを防ぐちょっとしたコツをまとめました!
◼︎意図しない大量印刷
マクロでの印刷で一番多いトラブルは、「思っていた以上にたくさん印刷されてしまった!」というケースです。
実は私も以前、列幅がうまく収まっておらず、1ページで終わるはずの資料が何十ページにも分割されてしまい、気づかずに100枚規模の印刷指示を出してしまったことがあります。
幸い、会社のプリンターは社員証をかざしてから印刷が始まる仕組みだったため、気づいてストップできましたが、もし直接プリントアウトされていたら大変な紙の山になるところでした…。
こうした失敗を防ぐために、最初のうちは 必ずプレビューで仕上がりを確認するか、印刷枚数を1ページだけに限定してテストをするのがおすすめです。
プレビューで確認をする:
ActiveSheet.PrintPreview
または、1ページに限定する:
ActiveSheet.PrintOut From:=1, To:=1
慣れてきても、マクロを変更したときは一度プレビューでチェックする習慣をつけておきましょう!
◼︎マクロ実行で印刷設定が上書きされる
印刷マクロを作るときは、PageSetup などで設定を変更すると、元の印刷設定が上書きされてしまうことに注意が必要です。
例えばマクロで向きを横に変えて印刷した場合、その後の手動印刷も横向きのままになってしまいます。
特に、共有ファイルの場合は他の人の印刷レイアウトにも影響します。
もし一時的に設定を変えたいだけなら、マクロ内で元の設定を覚えておいて、印刷後に戻すコードを書きましょう。
以下は、印刷の向きを変更して印刷した後、元に戻す例です:
' もともとの印刷向きを変数 ori に保存
Dim ori As XlPageOrientation
ori = ActiveSheet.PageSetup.Orientation
' 向きを横向き (Landscape) に変更
ActiveSheet.PageSetup.Orientation = xlLandscape
' 横向きで印刷する
ActiveSheet.PrintOut
' 印刷が終わったら元の向きに戻す
ActiveSheet.PageSetup.Orientation = ori
このマクロでは、まず現在の印刷向きを一時的に変数 ori に保存しています。
その上で印刷向きを横向きに変更してから PrintOut で印刷を実行し、印刷が終わったら最後に変数 oriを呼び戻して元の設定に戻しているのです。
このように、マクロを変更した際の確認作業や設定変更時の配慮などにより思わぬトラブルを防ぐことができます。
安全に使うためにもこの2点を意識してマクロでの印刷を取り入れてみてください!
5.まとめ
ここまで、Excelマクロで印刷を自動化する方法を、基本構文から応用テクニック、注意ポイントまで一気にご紹介してきました。
最後に大事な部分を振り返りましょう!
◼︎印刷マクロの構文をおさらい!
印刷マクロの基本は PrintOut と PrintPreview、そして PDF保存の ExportAsFixedFormat です。
この記事で紹介した代表的なパターンをもう一度確認しましょう。
内容 | コード例 |
アクティブシートを印刷 | ActiveSheet.PrintOut |
特定シートを印刷 | Sheets(“請求書”).PrintOut |
複数シートを印刷 | Sheets(Array(“見積書”,”明細書”)).PrintOut |
全シートを印刷 | Sheets.PrintOut |
範囲を指定して印刷 | Range(“A1:C10”).PrintOut |
選択範囲を印刷 | Selection.PrintOut |
ページ範囲・部数指定 | ActiveSheet.PrintOut From:=1, To:=1, Copies:=2 |
印刷の向きを横に設定 | ActiveSheet.PageSetup.Orientation = xlLandscape |
PDFとして保存 | ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”C:\保存先\ファイル名.pdf” |
慣れるまではこの表を見ながらコードを書いてみると良いでしょう。
◼︎失敗しないためのポイントをおさらい!
この記事で紹介した「これだけは覚えておきたい注意ポイント」をまとめました。
- いきなり大量印刷しない
→必ずプレビュー画面で確認するか、ページ範囲を限定してテストしてから利用する - 印刷設定を戻す構文を入れる
→PageSetupで設定変更をして印刷する場合には、元に戻す構文を導入する
この2点は、職場などでしてしまうと他の方に迷惑をかけてしまうようなミスを未然に防止できます。
印刷をマクロで自動化する際には特に心がけるようにしましょう。
1日5分、10分の作業も自動化すると一気に楽になります。
いつも同じ資料を印刷しているような方は、この記事を参考に印刷マクロをぜひ作ってみてください!
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!