ブック・シートの印刷
ExcelVBAでブックやシートを印刷するのはそれほど難しくありません。
それぞれのオブジェクトにPrintOutというメソッドがありますので、これを実行させればOKです。
ブックの印刷
Sub ブックの印刷()
ThisWorkbook.PrintOut
End Sub
シートの印刷
Sub シートの印刷()
Worksheets("Sheet1").PrintOut
End Sub
複数のシートを印刷
複数のシートを印刷したい場合は、上記のコードを羅列してもOKですが、印刷先をPDFに指定する場合は、1つにまとめる事ができません。複数シートを指定する方法です。
現在のシートの1ページ~2ページのみを印刷するには以下のようにFromを使います。
連続したページ指定ができます。
Sub 複数シートの印刷()
ThisWorkbook.PrintOut From:=1, To:=2
End Sub
配列を使ってシートを特定して印刷する事もできます。この場合は、とびとびのページ指定が可能です。
Sub 複数シートの印刷2()
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).PrintOut
End Sub
更に動的配列で指定する方法です。この方法ならプログラム上で印刷するシートを使い分けたい時に便利です。
Sub 複数シートの印刷3()
ReDim arr(1)
arr(0) = "Sheet1"
arr(1) = "Sheet2"
Worksheets(arr).PrintOut
End Sub
シート内のある範囲だけを印刷
RangeオブジェクトでもPrintOutメソッドが使えます。
Sub シートの範囲印刷()
ActiveSheet.Range("A1:G10").PrintOut
End Sub
印刷プレビューを表示させる
印刷前にプレビューを表示させます。印刷はユーザーが印刷ボタンを押す必要があります。
Sub 印刷プレビュー()
ActiveWorkbook.PrintOut Preview:=True
End Sub
Microsoft Print to PDF で印刷
Windows10から「Microsoft Print to PDF」が使えるようになりました。これをプリンターに指定して印刷ボタンを押すと、ファイル名指定のダイアログボックスが出てPDFファイルとして出力できます。
Sub プリンター名を指定して印刷()
ActiveSheet.PrintOut ActivePrinter:="Microsoft Print to PDF"
End Sub
実際に印刷する前に、PDFファイルで印刷の状態を確認できますので、無駄紙を減らすことができるので便利です。
尚、PDFに直接出力する方法もあります。詳しくはこちらのページを参照してください。