今回はExcelVBAのPrintOutメソッドを使用して、印刷する方法をご説明します。
印刷出来る対象はワークブック、シート、セル、グラフなど多数あります。
決まったフォーマットを毎月、毎週、もしくは毎日手動で印刷するような作業があれば、PrintOutメソッドで簡単に自動化出来ます。
ただし、印刷はしっかり設定や挙動のテストしないと、意図しない大量印刷等の原因となりますので、プレビューで確認後に印刷することをお勧めします。
1.PrintOutの使い方
ワークシートを印刷するには「PrintOutメソッド」を使用します。
次のように記述します。
Object.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)
Objectには「Window、Workbook、Worksheet、Range、Chart」オブジェクトと「Sheets、Worksheets、Charts」コレクションを指定する事ができます。
注意事項として非表示のシートを印刷しようとするとエラーとなりますので、非表示のシートが存在する場合は表示するコードを組み込んでください。
また、引数が多いので基本的には引数名を省略しない方が良いと思います。
PrintOutの引数一覧
引数は全て省略可能ですが、省略する場合は省略した際の挙動をしっかり理解してください。
引数名 | 省略 | 説明 |
From | 省略可能 | 印刷を開始するページの番号を指定します。 省略すると、最初のページから印刷します。 |
To | 省略可能 | 印刷を終了するページの番号を指定します。 省略すると、最後のページまで印刷します。 |
Copies | 省略可能 | 印刷部数を指定します。 省略すると、印刷部数は 1 部になります。 |
Preview | 省略可能 | Trueを指定すると印刷をする前に印刷プレビューを実行します。 Falseまたは省略を指定すると直ちに印刷を行います。 |
ActivePrinter | 省略可能 | アクティブなプリンターの名前を指定します。 |
PrintToFile | 省略可能 | Trueの場合、ファイルへ出力します。 省略した場合、出力先ファイル名を指定するダイアログボックスを表示します。 |
Collate | 省略可能 | True の場合、部単位で印刷します。 |
PrToFileName | 省略可能 | PrintToFileがTrueの場合、印刷したいファイルの名前を指定します。 |
IgnorePrintAreas | 省略可能 | Trueの場合、印刷範囲を無視してオブジェクト全体を印刷します。 |
2.サンプルコード
Sub Sample1()
'設定なしで全シートを印刷する
ThisWorkbook.PrintOut
'設定なしで全ページを印刷する
Worksheets("Sheet1").PrintOut
'1ページから5ページまで印刷する
Worksheets("Sheet1").PrintOut From:=1, To:=5
'1ページから5ページまで3部印刷する
Worksheets("Sheet1").PrintOut From:=1, To:=5, Copies:=3
'Sheet1、Sheet2、Sheet3を印刷する
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).PrintOut
'プレビューを表示する
Worksheets("Sheet1").PrintOut Preview:=True
'基本的な設定をまとめてする
Worksheets("Sheet1").PrintOut From:=1, To:=5, Copies:=3, Preview:=True
End Sub