ブック・シートの印刷

中級VBA

ブック・シートの印刷

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に直接出力する方法もあります。詳しくはこちらのページを参照してください。

タイトルとURLをコピーしました