VBATips

特定シート以外のWorkSheetを印刷する【エクセルVBA】

VBAマクロで開いているWorkbookの複数シートを印刷したい場合があります。
全てのシートであれば、複数シートの印刷ブック全体の印刷で対応できますが、
任意の指定シートのみを印刷する場合は、少し変化が必要です。

指定したシート以外のWorkSheetをすべて印刷したい

Public Sub sample()
'①■全てのシートを対象に処理する(ActiveWorkbook)
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        '■1枚づつ印刷処理を行う(非表示シートがある場合はエラー発生するため、表示しているシートのみ対象とする)
        If ws.Visible = xlSheetVisible Then
            Select Case ws.Name
                Case "設定", "月集計" 'シートの名称が「設定」や「月集計」は何もしない
                Case Else
                    ws.PrintOut
            End Select
        End If
    Next
 
    '②■全てのシートを対象に処理する(ActiveWorkbook)
    Dim i As Long
    Dim arr As Variant
    For i = 1 To Worksheets.Count
        '■表示されているシートを配列に格納
        If Worksheets(i).Visible = xlSheetVisible Then
            Select Case ws.Name
                Case "設定", "月集計" 'シートの名称が「設定」や「月集計」は何もしない
                Case Else
                    If IsEmpty(arr) Then
                        ReDim arr(0)
                    Else
                        ReDim Preserve arr(UBound(arr) + 1)
                    End If
                    arr(UBound(arr)) = Worksheets(i).Name
                End Select
        End If
    Next i
    '■配列にまとめたものを一気に印刷する
    Sheets(arr).PrintOut
 
End Sub

注意点

  • ①で都度印刷処理を行う場合、シートのたびに印刷処理がかかります
    (途中で他の人が印刷すると間に入ってしまいます)
  • ②配列に格納しての場合、シートを1回の印刷処理で印刷します。
  • 非表示シートがあった場合はエラーが出るため、表示非表示のチェックを行います。

関連記事

 

コメント

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