WorksheetクラスのPrintOutメソッドが失敗しました。(実行時エラー'1004')

全シートを印刷するマクロを実行したところ、以下のようなエラーが出てしまったのでメモ。

image.png

シートが非表示になっている場合にSheets(index).PrintOutを実行すると上記のエラーになってしまいます。 この場合、シートをいったん再表示にすることでエラーを回避できます。

Sheetオブジェクトの持つVisibleが表示・非表示の状態を表しているので、これを利用することで印刷実行の抑止ができるようになります。 以下の例では、非表示になっているシートも含めてすべて印刷します。

Sub test()
    Dim i As Integer
    For i = 1 To Sheets.Count
        'シートを表示にする
        Sheets(i).Visible = True
        Sheets(i).PrintOut
    Next i
    
End Sub

以下の例では、非表示になっているシートは印刷されません。

Sub test()
    Dim i As Integer
    
    For i = 1 To Sheets.Count
        '表示になっているシートのみ印刷する
        If Sheets(i).Visible Then
            Sheets(i).PrintOut
        End If
    Next i
End Sub