
定期的に同じ帳票や一覧表を印刷している場合、毎回「印刷」をクリックするのは手間がかかります。
Excelで自動印刷マクロを設定しておくと、ボタン一つで印刷できるようになり、作業時間の短縮とミスの防止につながります。
この記事では、Excelで自動印刷を行うためのマクロ(VBA)の作成方法を、基本から順に解説します。
印刷ボタンの作り方、よく使うVBAコードの例、連続印刷・一括印刷の設定までまとめて紹介します。
最後に、印刷機能付きのExcelテンプレートファイルのダウンロードリンクも用意しています。
「まずは完成形を使ってみたい」という場合にも、そのまま活用できます。
1: Excelの自動印刷マクロとは
1-1: Excelで使用するマクロと印刷機能の基礎知識
Excelのマクロを使うと、よく行う操作をボタン一つで実行できるようになります。
印刷処理もマクロで自動化しておけば、毎回「印刷」メニューを開かなくても、決まったシートや範囲をすぐに印刷できます。
マクロは、一連の操作を記録・実行するための小さなプログラムです。
Excelでは「VBA(Visual Basic for Applications)」という仕組みを使って、印刷設定や印刷の実行まで細かく制御できます。
1-2: Excel VBAを使った印刷機能の活用方法
VBAを使うと、次のような印刷操作を自動化できます。
- 特定のシートだけを印刷する
- あらかじめ決めた範囲だけを印刷する
- まとめて複数のシートを印刷する
- プリンターや用紙サイズを自動で設定してから印刷する
たとえば、毎朝同じ帳票を印刷する場合、ボタンを押すだけで必要なシートをすべて印刷できるようになります。
手作業の印刷に比べて、ミスも減らしやすくなります。
1-3: Excelの印刷機能を自動化するメリット
印刷機能をマクロで自動化すると、次のようなメリットがあります。
- 印刷のたびに同じ操作を繰り返す必要がなくなる
- 印刷範囲や設定のミスを防ぎやすい
- 複数シート・複数ファイルの印刷をまとめて処理できる
- フォーマットや印刷条件を統一しやすい
日次・週次・月次の帳票、請求書、チェックリストなど、定期的な印刷業務がある場合ほど効果が大きくなります。
2: Excelでの印刷マクロ設定方法
2-1: 印刷ボタンを設置する方法
まずは、シート上に「印刷ボタン」を用意し、そのボタンからマクロを実行できるようにします。
手順の例:
- Excelの「開発」タブを表示する
- 「挿入」から「フォームコントロール」の「ボタン」を選び、シート上に配置する
- 表示されたダイアログで、あとから作成する印刷用マクロを割り当てる
このボタンにマクロを設定しておけば、クリックだけで印刷が実行できます。
2-2: VBAコードを使用した自動印刷の設定方法
印刷ボタンに対して、印刷を実行するマクロを作成します。
例として、アクティブなシートをそのまま印刷するコードは次のとおりです。
Sub PrintSheet()
ActiveSheet.PrintOut
End Sub
このマクロを「PrintSheet」という名前で保存し、先ほど配置したボタンに割り当てます。
以後、そのボタンをクリックするだけで、現在のシートが印刷されます。
VBAコードを使った印刷マクロの流れは、次のショート動画でも確認できます。
▶ ショート動画:Excelで印刷マクロを実行する方法
2-3: マクロを使用した一括印刷の設定方法
複数のシートをまとめて印刷したい場合は、ループ処理を使って一括印刷を行います。
Sub PrintAllSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintOut
Next ws
End Sub
このマクロは、ブック内のすべてのシートを順番に印刷します。
特定のシートだけを印刷したい場合は、対象シートを限定するようにコードを調整します。
3: Excelでの印刷範囲の設定方法
3-1: 印刷するセルやシートの範囲を指定する方法
必要な部分だけを印刷したい場合は、印刷範囲を指定してから印刷します。
ActiveSheet.PageSetup.PrintArea = "A1:D10"
ActiveSheet.PrintOut
この例では、A1~D10の範囲だけが印刷対象になります。
帳票のレイアウトに合わせて、印刷範囲をあらかじめ指定しておくと便利です。
3-2: 印刷時の条件付き設定方法
条件に応じて印刷する・しないを切り替えることもできます。
If Range("A1").Value = "印刷" Then
ActiveSheet.PrintOut
End If
このコードでは、A1セルに「印刷」と入力されている場合だけ印刷を実行します。
チェックボックスの代わりにセルの値を条件として使うイメージです。
3-3: 自動印刷を行うためのVBAコードの解説
印刷前に用紙の向きや縮小印刷の設定を自動で行ってから印刷することもできます。
Sub AutoPrint()
With ActiveSheet.PageSetup
.Orientation = xlLandscape ' 横向き
.FitToPagesWide = 1 ' 横方向1ページに収める
.FitToPagesTall = False ' 縦方向のページ数は自動
End With
ActiveSheet.PrintOut
End Sub
印刷のたびにページ設定を開く必要がなくなり、常に同じレイアウトで印刷できます。
4: Excel VBAコードを活用した印刷設定
4-1: VBAコードを使用したプリンターの設定方法
部署や用途によってプリンターを切り替えたい場合は、印刷前にプリンターを指定します。
Sub SetPrinter()
Application.ActivePrinter = "プリンター名 on NeXX"
ActiveSheet.PrintOut
End Sub
実際の環境に合わせて「プリンター名 on NeXX」の部分を書き換えて使用します。
4-2: VBAを使った印刷プロパティの設定方法
印刷の向きや用紙サイズ、余白などもマクロ側で統一できます。
Sub SetPrintProperties()
With ActiveSheet.PageSetup
.Orientation = xlPortrait ' 縦向き
.PaperSize = xlPaperA4 ' A4用紙
.LeftMargin = Application.InchesToPoints(0.5)
End With
ActiveSheet.PrintOut
End Sub
帳票ごとにばらばらだった印刷設定を、マクロで揃えておくことができます。
4-3: VBAコードを活用した印刷時の設定方法
ヘッダーやフッターを自動で付けて印刷することも可能です。
Sub PrintWithHeaderFooter()
With ActiveSheet.PageSetup
.CenterHeader = "ヘッダーテキスト"
.CenterFooter = "フッターテキスト"
End With
ActiveSheet.PrintOut
End Sub
会社名や日付、ページ番号などをヘッダー・フッターに入れておくと、印刷物の管理がしやすくなります。
5: Excelの自動印刷の具体的な手順
5-1: PrintOutメソッドを使用した印刷手順
Excelで印刷を実行するVBAの基本は、PrintOut メソッドです。
Sub SimplePrint()
ActiveSheet.PrintOut
End Sub
まずはこのようなシンプルなマクロから動作を確認し、必要に応じて設定を追加していくと分かりやすくなります。
5-2: 印刷前にプレビューを行う方法
いきなり印刷せず、プレビューで確認したい場合は PrintPreview を使います。
Sub PrintPreview()
ActiveSheet.PrintPreview
End Sub
マクロからでも、通常の印刷と同じように印刷イメージを事前に確認できます。
5-3: VBAコードを使った印刷ファイルの登録方法
よく使う帳票ファイルを決め打ちで印刷したいときは、ファイルパスをマクロに登録しておく方法があります。
Sub RegisterPrintFile()
Dim filePath As String
filePath = "C:\path\to\your\file.xlsx"
Workbooks.Open filePath
ActiveWorkbook.Sheets(1).PrintOut
ActiveWorkbook.Close
End Sub
印刷したいファイルを開き、指定シートを印刷してから閉じるところまで自動で行います。
6: Excelでの連続印刷の方法
6-1: 複数のシートやセルを連続して印刷する方法
ブック内のすべてのシートを連続して印刷する基本的な例です。
Sub PrintMultipleSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintOut
Next ws
End Sub
各シートの内容をまとめて出力したい場合に使えます。
6-2: VBAコードを使った連続印刷設定方法
印刷するシートを限定したいときは、シート名の配列を使う方法が便利です。
Sub PrintSelectedSheets()
Dim sheetNames As Variant
Dim i As Integer
sheetNames = Array("Sheet1", "Sheet2", "Sheet3")
For i = LBound(sheetNames) To UBound(sheetNames)
Sheets(sheetNames(i)).PrintOut
Next i
End Sub
「この3シートだけ毎回印刷したい」といったケースでよく使うパターンです。
7: Excelでの一括印刷の設定方法
7-1: 大量のデータを一括で印刷する方法
大量のデータやシートをまとめて印刷する場合も、基本はループ処理で対応します。
Sub PrintLargeData()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintOut
Next ws
End Sub
各シートのレイアウトを整えておけば、一括印刷でも見やすい帳票をまとめて出力できます。
7-2: VBAを使った一括印刷の実装方法
コード名を付けた一括印刷マクロの例です。
Sub BulkPrint()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintOut
Next ws
End Sub
BulkPrint マクロをボタンに割り当てておけば、日次・週次の帳票を一度に印刷できます。
8: Excel VBAコードを使わない自動印刷の方法
8-1: マクロを使用せずに印刷する方法
マクロを使わずに印刷作業を整理するだけでも、ある程度の効率化は可能です。
- 印刷したい範囲を選択する
- 「ファイル」→「印刷」から、印刷範囲や設定を確認する
- プリンターと部数を指定して印刷する
印刷範囲を名前付き範囲として保存しておくと、範囲選択の手間を減らせます。
8-2: 特定の条件を満たした際に自動印刷を実行する方法
VBAを使わず、Excelの機能だけで「条件に応じた印刷」を厳密に自動化することは難しいですが、
条件付き書式やフィルターを組み合わせて「印刷対象を切り替える」という使い方は可能です。
- 条件付き書式で対象行を強調する
- フィルターやテーブル機能で印刷対象だけを絞り込む
- 絞り込んだ状態で印刷する
完全自動化まではしない場合でも、「印刷する対象を間違えない」という点で役立ちます。
8-3: Excelでの自動印刷を行うための手順
マクロを使わない場合でも、次のような流れで作業を整理しておくとミスを減らせます。
- 印刷したい範囲やシートを決めておく
- 印刷設定(向き・余白・拡大縮小など)を事前に整えておく
- 毎回同じ手順で印刷するようにルール化する
さらに自動化したい場合は、この記事で紹介したVBAマクロを組み合わせていくと便利です。
9: Excel印刷機能の応用方法
9-1: 印刷したデータを自動保存する方法
印刷前に必ず保存しておきたい場合は、印刷処理と保存処理をまとめておきます。
Sub SaveAndPrint()
ActiveWorkbook.Save
ActiveSheet.PrintOut
End Sub
印刷したときの状態を残しておきたい帳票に向いています。
9-2: 印刷業務を効率化するためのヒント
印刷業務を少しずつ整理していくだけでも、負担は軽くなります。
- 印刷範囲をあらかじめ設定しておく
- よく使う印刷設定をマクロにまとめておく
- 定期的な印刷作業は「ボタン一つ」で実行できるようにする
日常の作業の中で「毎回同じ操作をしている部分」は、自動化の候補になります。
9-3: Excelを使った帳票や報告書の自動化方法
帳票や報告書の作成から印刷までを自動化することも可能です。
Sub ReportAutomation()
' データを集計するコード
' 帳票を作成するコード
ActiveSheet.PrintOut
End Sub
集計・レイアウト・印刷をひとまとめにしておくことで、報告書作成の手間を大きく減らせます。
10: これまでの印刷設定コードまとめ
ここまで紹介してきた印刷関連のVBAコードを、用途別にまとめます。
必要なものをコピーして、自分の帳票に合わせて調整して使ってください。
■ 印刷設定なし
現在のシートをシンプルに印刷するコードです。
Sub PrintSheet()
ActiveSheet.PrintOut
End Sub
■ ページ範囲指定
特定の範囲を指定して印刷するコードです。
Sub PrintSpecificRange()
ActiveSheet.PageSetup.PrintArea = "A1:D10"
ActiveSheet.PrintOut
End Sub
■ 印刷数指定(部数の指定)
Sub PrintMultipleCopies()
ActiveSheet.PrintOut Copies:=3
End Sub
■ 印刷プレビュー表示設定
Sub PrintPreviewCurrentSheet()
ActiveSheet.PrintPreview
End Sub
■ 複数のシートを印刷
Sub PrintAllSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintOut
Next ws
End Sub
■ 複数のシートの印刷プレビューを表示
Sub PrintPreviewAllSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintPreview
Next ws
End Sub
■ プリンターの設定
Sub SetPrinter()
Application.ActivePrinter = "プリンター名 on NeXX"
ActiveSheet.PrintOut
End Sub
■ 印刷プロパティの設定
Sub SetPrintProperties()
With ActiveSheet.PageSetup
.Orientation = xlPortrait
.PaperSize = xlPaperA4
.LeftMargin = Application.InchesToPoints(0.5)
End With
ActiveSheet.PrintOut
End Sub
■ 条件付き印刷
Sub ConditionalPrint()
If Range("A7").Value = "印刷" Then
ActiveSheet.PrintOut
End If
End Sub
■ 特定のファイルを印刷
Sub RegisterPrintFile()
Dim filePath As String
filePath = "C:\path\to\your\file.xlsx"
Workbooks.Open filePath
ActiveWorkbook.Sheets(1).PrintOut
ActiveWorkbook.Close
End Sub
■ 複数のシートを連続して印刷
Sub PrintSelectedSheets()
Dim sheetNames As Variant
Dim i As Integer
sheetNames = Array("Sheet1", "Sheet2", "Sheet3")
For i = LBound(sheetNames) To UBound(sheetNames)
Sheets(sheetNames(i)).PrintOut
Next i
End Sub
■ 印刷したデータを自動保存する
Sub SaveAndPrint()
ActiveWorkbook.Save
ActiveSheet.PrintOut
End Sub
■ ヘッダーやフッターを追加して印刷する
Sub PrintWithHeaderFooter()
With ActiveSheet.PageSetup
.CenterHeader = "ヘッダーテキスト"
.CenterFooter = "フッターテキスト"
End With
ActiveSheet.PrintOut
End Sub
まとめ
この記事では、Excelで自動印刷を行うためのマクロ作成方法と、よく使う印刷用VBAコードをまとめて紹介しました。
- シート単位の印刷
- 印刷範囲の指定
- 連続印刷・一括印刷
- プリンターや印刷プロパティの設定
- 条件付き印刷や保存と組み合わせた印刷
これらを組み合わせることで、日々の印刷作業を大きく減らすことができます。
以下のリンクから、この記事の内容を反映した Excel 印刷テンプレートファイルをダウンロードできます。
テンプレートには、ここで紹介した印刷用マクロや設定があらかじめ組み込まれています。
自分の業務に合わせてカスタマイズしながら、印刷作業の自動化に役立ててください。
Tamaglo最後までお読みいただきありがとうございます。
コメント
※ コメントは確認後に公開されます。反映まで少し時間がかかる場合があります。