【Excel VBA】印刷を自動化する4つの基本パターン(シート・ブック・範囲指定)

定型的なレポートや資料を作成する際、毎回同じシートやセル範囲を選択して印刷するのは手間がかかります。VBAを使えば、「印刷」ボタン一つで、決まった対象を、決まった設定で印刷する処理を自動化し、作業効率を大幅に向上させることができます。

この記事では、VBAによる印刷自動化の基本となる**.PrintOutメソッド**を使い、4つの異なる対象(アクティブシート、複数シート、ブック全体、特定範囲)を印刷する方法を、具体的なコード例と共に解説します。


目次

パターン1:現在アクティブなシートを印刷する

最も基本的なパターンです。ユーザーが現在表示・操作しているシートを1部印刷します。

コード例

Sub PrintActiveSheetOnly()
    ' 現在アクティブなシートを印刷
    ActiveSheet.PrintOut
End Sub

ポイント解説

ActiveSheetは、現在選択されているワークシートを指すオブジェクトです。その.PrintOutメソッドを呼び出すだけで、そのシートが既定のプリンターから出力されます。


パターン2:複数の指定したシートをまとめて印刷する

「表紙」「目次」「集計」のように、印刷したいシートが複数に分かれている場合に便利です。

コード例

Sub PrintMultipleSheets()
    ' "月次報告"シートと"データシート"をまとめて印刷
    Worksheets(Array("月次報告", "データシート")).PrintOut
End Sub

ポイント解説

Worksheetsオブジェクトの引数に、シート名やインデックス番号を**Array関数**で配列として渡すことで、複数のシートを一度に選択した状態にし、まとめて印刷することができます。


パターン3:ブック全体を複数部数印刷する

ブックに含まれるすべてのシートを、指定した部数だけ印刷します。

コード例

Sub PrintEntireWorkbook_3_Copies()
    ' ブック全体を3部印刷する
    ActiveWorkbook.PrintOut Copies:=3
End Sub

ポイント解説

  • ActiveWorkbookオブジェクト: .PrintOutメソッドをActiveWorkbookオブジェクトに対して使うと、ブック全体が印刷対象になります。
  • Copies引数: .PrintOutメソッドの引数Copiesに数値を指定することで、印刷部数をコントロールできます。
  • 便利な引数: この他にも、Preview:=Trueとすれば印刷プレビューを表示したり、To:=5とすれば5ページ目までを印刷したり、といった指定も可能です。VB.Net' 例: 5ページ目までを印刷プレビューで表示 ActiveWorkbook.PrintOut To:=5, Preview:=True

パターン4:特定のセル範囲のみを印刷する

シートの一部分だけを抜き出して印刷したい場合に使います。手作業で「印刷範囲の設定」を行うのと同じ効果をVBAで実現します。

コード例

Sub PrintSpecificRanges()
    ' 指定した複数のセル範囲だけを印刷
    Range("B2:F10, B15:F25").PrintOut
End Sub

ポイント解説

.PrintOutメソッドはRangeオブジェクトに対しても使用できます。複数の離れた範囲を印刷したい場合は、 "範囲1, 範囲2, ..." のように、アドレスをカンマで区切った文字列をRangeオブジェクトに渡します。


まとめ

VBAの.PrintOutメソッドは、どのオブジェクト(Worksheet, Workbook, Rangeなど)に対して使うかによって、印刷対象を柔軟にコントロールできる非常に便利な機能です。

  • 今見ているシート: ActiveSheet.PrintOut
  • 指定した複数シート: Worksheets(Array(...)).PrintOut
  • ファイル全体: ActiveWorkbook.PrintOut
  • 一部分だけ: Range(...).PrintOut

これらの基本パターンを組み合わせ、ワークシート上に配置したボタンから呼び出すようにすれば、誰でも簡単に使える印刷システムを構築することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次