Excelマクロで印刷する方法まとめ|ボタン作成・連続印刷・設定の基本と応用を紹介

Excelマクロで印刷する方法まとめ|ボタン作成・連続印刷・設定の基本と応用を紹介

本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。

エクセルで毎回同じシートを印刷する作業、意外と手間に感じたことはありませんか?
そんなときに便利なのが「マクロ(VBA)」を使った印刷の自動化です。

マクロを使えば、ボタンをクリックするだけで印刷できる仕組みを作ることができます。さらに、複数のシートをまとめて印刷したり、プリンターの設定画面を開いたりと、印刷作業をぐっと効率化できます。

この記事では、エクセル初心者の方にもわかりやすく「マクロで印刷する方法」を解説します。まずは基本的な印刷マクロの書き方から始めて、応用的な設定方法まで丁寧に紹介していきますので、ぜひ最後までご覧ください。

目次

マクロで印刷する基本方法

最もシンプルな印刷マクロ

まずは、いちばんシンプルな「現在表示されているシートをそのまま印刷する」マクロから紹介します。

■ 基本コード

Sub 印刷する()
 '選択しているセルを印刷する
  ActiveSheet.PrintOut 
End Sub

マクロで印刷する基本コード_PrintOutメソッド

このコードは、「今アクティブになっているシート(表示中のシート)」を、印刷の設定なしでそのままプリンターへ送信します。

■ ポイント解説

  • ActiveSheet は現在開いているシートを指します。

  • PrintOut は印刷命令を出すVBAのメソッドです。

  • 特別な設定は不要で、プリンタや部数などはExcelの標準設定が使われます。

■ 実行方法

  1. Excelを開き、Alt + F11でVBAエディターを起動

  2. 「挿入」→「標準モジュール」で新しいモジュールを追加

  3. 上記コードを貼り付けて、F5キーで実行

これだけで印刷が実行されます。まずはこのシンプルなマクロで、VBA印刷の基本を体感してみましょう。


印刷ボタンを作成して使う

マクロは、VBA画面からだけでなく、ボタンをクリックするだけで実行することもできます。
ここでは、フォームコントロールのボタンを使って、ワンクリックで印刷できるようにする手順をご紹介します。


■ ボタンの作成手順(フォームコントロール)

  1. Excelの上部メニューから「開発」タブを選択

  2. 「挿入」→「フォームコントロール」の「ボタン」をクリック
    開発タブ挿入メニューボタンを選択

  3. 印刷用ボタンを配置したい場所をクリックして設置
    ↓ボタンを選択した状態で右クリックし、テキストの編集をします。
    ボタンのテキストを変更

  4. 表示された「マクロの登録」ウィンドウで、先ほど作成した 印刷する マクロを選択して「OK」
    ボタンにマクロを登録

※マクロボタンの設置については以下の記事もご参考ください。
初心者でも簡単!Excelマクロボタンの設定と実践的な活用法
Excelマクロボタンが反応しない?原因と対処法まとめ


■ 実行するとどうなる?

このボタンをクリックすると、先ほどの ActiveSheet.PrintOut マクロが実行され、現在表示しているシートが即座に印刷されます。


■ ワンポイント:ボタンの名前を変更する方法

  • ボタン上で右クリック →「テキストの編集」
    → 「印刷する」や「納品書印刷」など、用途に合わせて名前を付けておくとわかりやすくなります。


■ 活用例

  • 請求書や納品書など、決まったシートを毎回印刷する作業に最適です。

  • ボタン1つで出力できるため、パソコン操作に不慣れな人でも使いやすくなります。

複数シートをまとめて印刷する

印刷したいシートが複数ある場合でも、マクロを使えばまとめて一括印刷が可能です。
「請求書」「納品書」「報告書」など、複数の帳票を連続で出力したいときに便利です。


■ 複数シートを印刷するマクロの例

Sub 複数シートを印刷する()
 '"Sheet1", "Sheet2", "Sheet3"を印刷
 Sheets(Array("Sheet1", "Sheet2", "Sheet3")).PrintOut
End Sub

■ ポイント解説

  • Sheets(Array(...)) の部分で印刷対象のシートを指定しています。

  • "Sheet1" などの名前は、実際のシート名に置き換えてください。

  • 並び順は記載した順になります。


■ 実行方法

  1. Alt + F11 でVBAエディターを開く

  2. 上記のコードを新しいモジュールに貼り付け

  3. F5キーで実行 or ボタンに割り当てて印刷


■ 補足:アクティブブック内のすべてのシートを印刷したいとき

Sub すべてのシートを印刷()
 'ファイル内のすべてのシートを印刷
  ThisWorkbook.Sheets.PrintOut 
End Sub

このコードを使えば、開いているブック内のすべてのシートを一括印刷できます。


■ 活用例

  • 帳票を複数シートに分けて作成している場合ぷれ

  • 配布用資料や会議資料をまとめて印刷したい場合

  • 曜日別・月別などにシートを分けて管理している場合


このように、マクロを使えば印刷の手間を大幅に削減できます。
次章では、さらに便利な「印刷プレビュー」や「プリンターの設定呼び出し」などの応用的な印刷マクロをご紹介します。


マクロで印刷を便利にする応用設定

印刷プレビューを表示してから印刷

マクロでいきなり印刷するのではなく、印刷プレビューを表示して確認してから印刷したい場合は、PrintPreviewメソッドを使います。


■ 印刷プレビューの表示マクロ

Sub プレビューを表示する()
 '印刷プレビュー画面を表示する
 ActiveSheet.PrintPreview 
End Sub

このコードを実行すると、アクティブなシートの印刷プレビュー画面が表示されます。
そのまま印刷するかどうかを、ユーザーが確認して判断できるようになります。

マクロで印刷プレビューを表示


■ 活用シーン

  • レイアウトが崩れていないか確認したいとき

  • 印刷範囲や改ページの位置をチェックしたいとき

  • 上司や他の担当者と内容を共有しながら印刷する場合


■ 補足:印刷プレビュー後に自動で印刷することはできる?

PrintPreview はあくまで確認用であり、ユーザーが手動で印刷ボタンを押す必要があります。
自動印刷とは別用途として、「印刷前の最終チェック」に活用しましょう。

連続印刷をする方法

複数のシートを順番に1枚ずつ印刷したい場合には、For ループを使って処理を繰り返すことで、連続印刷が可能になります。
特に「月ごとの帳票」や「名簿ごとのラベル印刷」など、同じ構造のシートが複数ある場合に便利です。


■ 基本的な連続印刷マクロ

Sub シートを順番に印刷する()
'ブック内のシートを順番に1枚ずつ印刷
 Dim i As Integer
 For i = 1 To Worksheets.Count
  Worksheets(i).PrintOut 
 Next i 
End Sub

■ ポイント解説

  • Worksheets.Count で、ブック内のシート数を取得しています。

  • Worksheets(i) は、1番目・2番目・3番目…と順にすべてのシートを対象とします。

  • 上記のコードではすべてのシートが順番に印刷されます。


■ 特定のシートだけを連続印刷したい場合

例えば、「Sheet1」「Sheet3」「Sheet5」だけを印刷したい場合は、以下のように記述します。

Sub 特定シートを連続印刷()

 '指定した複数のシートを印刷
 Dim targetSheets As Variant

 '印刷するシート名を指定
 Dim i As Integer targetSheets = Array("Sheet1", "Sheet3", "Sheet5")

 '繰り返し処理により指定したシートを印刷
 For i = LBound(targetSheets) To UBound(targetSheets)
  Worksheets(targetSheets(i)).PrintOut
 Next i 
End Sub

■ 活用例

  • 各営業所ごとの報告書をまとめて印刷

  • 毎月の請求書フォーマットを月別に印刷

  • ラベルやチェックリストを一括出力する場面など


■ 注意点

  • 空白のシートや印刷対象外のシートが含まれていないか、事前に確認しておきましょう。

  • プリンターの用紙切れなどで途中で止まると、手動再開が必要になる場合があります。

印刷設定画面を呼び出す

Excel VBAでは、ユーザーがプリンターの選択や印刷設定を自分で行えるように、印刷ダイアログを表示させることもできます。
プリンター名をマクロで固定してしまうと、PCやネットワーク環境が変わったときに不具合が出ることもあるため、あえてユーザー操作を促す方法は安全かつ実用的です。


■ 印刷設定画面を表示するマクロ

Sub 印刷設定画面を開く()
 Application.Dialogs(xlDialogPrint).Show
End Sub

↓マクロを実行すると以下のような印刷ダイアログが表示されます。

マクロを利用して印刷ダイアログを表示させる。


■ ポイント解説

  • Application.Dialogs(xlDialogPrint).Show は、Excelの印刷ダイアログをそのまま表示します。

  • ショートカットでいうと「Ctrl + P」と同じような動きです。

  • この方法を使えば、プリンターの指定や部数、ページ範囲などを手動で調整できます。


■ この方法が役立つシーン

  • 複数のプリンターを使い分けたいとき(例:片面/両面、手差し/自動など)

  • PCごとにプリンター環境が異なるとき

  • 紙の種類やトレイを選んで印刷したいとき


■ 注意点

  • 完全自動印刷ではないため、手動での操作が必要です。

  • 複数回の印刷をループで実行する用途には不向きです。


このように、あえて設定画面を開かせることで、誤印刷を防いだり、環境に依存しないマクロを作成できます。

特定のページ範囲・部数を指定する

印刷マクロでは、ただ印刷するだけでなく、ページ範囲や部数などを細かく指定することも可能です。
部署用に2部、管理用に1部など、状況に応じた出力コントロールができます。


■ ページ範囲・部数を指定して印刷するマクロ

Sub ページ範囲と部数を指定して印刷()
 '選択中のシート1ページ目~2ページ目を2枚ずつ印刷
 ActiveSheet.PrintOut From:=1, To:=2, Copies:=2, Collate:=True
End Sub

■ 引数の意味

引数 内容
From 印刷開始ページ(1ページ目など)
To 印刷終了ページ
Copies 印刷部数(何部印刷するか)
Collate 複数部印刷時にページ順を維持するか(True=維持)

■ 活用例

  • ページが多い資料の一部だけを印刷したいとき(例:3~5ページだけ)

  • 複数人に配布するため、同じ内容を2~3部印刷したいとき

  • 出力を並べ替えずにページ順で整理して渡したいとき(Collate=True)


■ 応用:他の設定と組み合わせることも可能

Sub プレビュー任意_確認して印刷()
    ' 1) プレビューを出すか確認(任意)
    If MsgBox("プレビューを表示しますか?", vbYesNo + vbQuestion, "印刷前の確認") = vbYes Then
        ActiveWindow.SelectedSheets.PrintPreview
    End If


    ' 2) 最終確認(既定は「いいえ」で誤印刷防止)
    If MsgBox("この内容で印刷しますか?", vbYesNo + vbQuestion + vbDefaultButton2, "印刷の確認") = vbYes Then
        ' ページ範囲・部数は必要に応じて指定(例は1~2ページを2部)
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=2, Collate:=True
    Else
        MsgBox "印刷をキャンセルしました。", vbInformation
    End If
End Sub

このように、プレビュー確認と組み合わせることで、安心して印刷処理が行えます。

【マクロの流れ】
  1. 「プレビューを表示しますか?」という確認メッセージが出ます。
     - YES → プレビュー画面が表示されます
     - NO → そのまま次の工程へ進みます

  2. 「この内容で印刷しますか?」という最終確認メッセージが出ます。
     - YES → 印刷を実行します
     - NO → 印刷をキャンセルします

実行すると、このような確認メッセージが表示されます。

印刷プレビューを表示するか確認メッセージを表示


■ 注意点

  • 対象シートの印刷範囲(ページ設定)が適切でないと、意図したページが印刷されないこともあります。

  • ページ区切りや余白は、事前に調整しておくとスムーズです。

印刷時のエラー対処法

マクロによる印刷は便利ですが、環境や設定によってはうまく印刷できないこともあります。
ここでは、よくあるトラブルとその対処法をいくつかご紹介します。


■ エラー①:空白ページまで印刷されてしまう

原因例:

  • 印刷範囲が自動的に広がってしまっている

  • データのないセルにも書式や罫線が残っている

対処法:

  • 印刷範囲を手動で設定(「ページレイアウト」→「印刷範囲の設定」)

  • マクロ内で印刷範囲を指定する(例:Range("A1:F30").PrintOut

Sub 範囲を限定して印刷()
 'セル範囲A1:F30を印刷
 Range("A1:F30").PrintOut
End Sub

■ エラー②:マクロ実行時に「デバッグ」や「エラー」メッセージが出る

対処法:

  • PrintOut に不要な引数が含まれていないか確認

  • プリンターが未接続の場合は、手動でプリンターを選んでから実行する

  • マクロが有効なブック形式(.xlsm)で保存されているかチェック


■ その他の対策

  • テスト印刷を行ってから本番印刷へ

  • エラー処理を入れて、ユーザーにわかりやすく通知する設計にする

  • VBAコード内に コメントで注意点 を書き残しておくと再利用しやすい

印刷エラーを防ぐために

マクロでの印刷は便利ですが、環境や設定によって挙動が変わることもあります。
**「設定を固定しすぎない」「エラー処理を入れる」「都度確認を促す」**といった工夫を取り入れることで、トラブルを未然に防げます。

もっと安全に印刷したい方へ

プレビュー後に「本当に印刷するか」を確認したり、複数シートをまとめて印刷する方法など、ミスプリント防止の応用マクロについては以下の記事で詳しく解説しています。
ミスプリント防止に印刷マクロ応用編(準備中)

まとめ

エクセルのマクロを使えば、印刷作業をぐっと効率化できます。
基本的な PrintOut を使ったシンプルなコードから始めて、複数シートの一括印刷や連続印刷、さらにはページ範囲や部数の指定まで、用途に応じて柔軟にカスタマイズできます。

また、プリンター環境が変わりやすい場合は、印刷ダイアログを表示させる方法を取り入れると、トラブルを減らせて安心です。
印刷エラーへの対処法も押さえておけば、実務でも安心して活用できます。

まずは基本の「ワンクリック印刷」から試してみて、少しずつ応用設定を組み合わせていくのがおすすめです。
マクロを活用して、毎日の印刷作業をもっとラクにしてみましょう。

【関連記事】

※外部リンク※

 

※参考書籍 (PR)

※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。