VBAを使用して可視および非表示のワークシートを印刷する方法


  1. 可視および非表示のワークシートを印刷する方法: 以下のVBAコードを使用すると、可視および非表示のワークシートを印刷できます。

    Sub PrintVisibleAndHiddenWorksheets()
       Dim ws As Worksheet
    
       For Each ws In ThisWorkbook.Worksheets
           ' ワークシートが可視状態かどうかを確認
           If ws.Visible = xlSheetVisible Then
               ' ワークシートを印刷する
               ws.PrintOut
           Else
               ' ワークシートを一時的に可視状態に変更して印刷する
               ws.Visible = xlSheetVisible
               ws.PrintOut
               ' ワークシートを元の非表示状態に戻す
               ws.Visible = xlSheetHidden
           End If
       Next ws
    End Sub

    上記のコードでは、PrintVisibleAndHiddenWorksheetsという名前のサブルーチンが作成されています。このサブルーチンでは、ThisWorkbook内のすべてのワークシートをループ処理し、可視状態のワークシートはそのまま印刷し、非表示状態のワークシートは一時的に可視状態に変更して印刷後、元の非表示状態に戻します。

  2. 特定のワークシートのみを印刷する方法: 上記のコードでは、すべてのワークシートが対象ですが、特定のワークシートのみを印刷したい場合は、以下のようにコードを変更します。

    Sub PrintSpecificWorksheets()
       Dim ws As Worksheet
       Dim targetSheets As Variant
    
       ' 印刷したいワークシートの名前を指定
       targetSheets = Array("Sheet1", "Sheet3", "Sheet5")
    
       For Each ws In ThisWorkbook.Worksheets
           ' ワークシートが指定されたワークシートかどうかを確認
           If IsInArray(ws.Name, targetSheets) Then
               ' ワークシートを印刷する
               ws.PrintOut
           End If
       Next ws
    End Sub
    
    Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
       IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
    End Function

    上記のコードでは、PrintSpecificWorksheetsという名前のサブルーチンが作成されています。targetSheets変数に印刷したいワークシートの名前を配列で指定し、ループ処理中に指定されたワークシートのみを印刷します。IsInArray関数は、指定されたワークシートがtargetSheets配列に存在するかどうかを確認するために使用されます。

これらの方法を使用すると、VBAを使ってExcelの可視および非表示のワークシートを印刷することができます。必要に応じて、コードをカスタマイズしてさまざまな要件に対応できます。