特定のシートのみ印刷する

中級VBA

はじめに

 ActiveWorkbook.PrintOut コマンドでは、印刷シートの特定で最初 (From) と最後 (To) のシート指定ができます。
 ある特定の複数シートを印刷対象としたい場合には、シートが非表示の場合は印刷されない事を利用して印刷したいシートを振り分ける事が出来ます。
 最後に、非表示を表示にすれば、印刷後は元の状態に戻ることができます。

プログラムコード

Sub myPrintOut()
    Dim s
    For Each s In Worksheets
        If s.Name = "Sheet2" Or s.Name = "Sheet3" Then
            s.Visible = False
        End If
    Next s

    ActiveWorkbook.PrintOut Preview:=True

    For Each s In Worksheets
        If s.Name = "Sheet2" Or s.Name = "Sheet3" Then
            s.Visible = True
        End If
    Next s
End Sub

 このコードでは、最初に Sheet2 と Sheet3 を非表示にして、印刷対象から除外しています。
 次に印刷コマンドをプレビュー付きで実行します。
 非表示となったシートは印刷対象から外れます。
 最後に、先程非表示にしたシートを表示属性に戻せばOKです。

まとめ

 今回は、「非表示のシートは印刷されない」というExcelの仕様を利用したアイデアになります。
 話が逸れますが、「非表示のシートはSelectできない」というExcelの仕様もありますので、これを利用したり、エラー対策すれば役に立つかもしれません。

 参考にしてみてください。


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