エクセルVBAでシートを指定して印刷する方法

Visual Basic

エクセルVBAを使用して、複数のシートを指定して印刷する方法について解説します。特に、シートごとに異なる部数で印刷したいという要件に対応するためのコードを紹介します。

1. シート印刷の基本的な流れ

エクセルVBAを使用して、シートを印刷するには、`PrintOut`メソッドを使います。このメソッドを使って、シートを指定した部数で印刷することが可能です。しかし、シートを複数枚印刷したり、特定のシートのみを選んで印刷する際には、少し工夫が必要です。

例えば、印刷しないシートを除外したり、特定のシートを異なる部数で印刷するためには、コード内でシートごとの部数を指定する必要があります。

2. 要求に基づいたコード例

以下のコードは、指定された条件に基づいて、各シートを異なる部数で印刷する例です。

Sub PrintSheets()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        If ws.Index <> 1 Then ' 1番目のシートは印刷しない
            If ws.Index >= 2 And ws.Index <= 8 Then
                ws.PrintOut Copies:=2 ' 2〜8番目のシートは2部印刷
            ElseIf ws.Index = 9 Then
                ws.PrintOut Copies:=1 ' 9番目のシートは1部印刷
            ElseIf ws.Index = 10 Then
                ws.PrintOut Copies:=1 ' 10番目のシートは1部印刷
            ElseIf ws.Index = 11 Then
                ws.PrintOut Copies:=1 ' 11番目のシートは1部印刷
            End If
        End If
    Next ws
End Sub

このコードでは、シートのインデックス(順番)を使用して、印刷するシートを選択し、それぞれに異なる部数を設定しています。

3. コードの詳細な解説

このVBAコードでは、`For Each ws In ThisWorkbook.Sheets`を使って、すべてのシートをループ処理しています。シートが1番目でない場合(`ws.Index <> 1`)、条件に応じて印刷部数を設定します。

例えば、`If ws.Index >= 2 And ws.Index <= 8 Then`では、2番目から8番目のシートに対して2部印刷を指定しています。また、`ElseIf ws.Index = 9 Then`では9番目のシートに対して1部印刷を設定しています。

4. 注意点とカスタマイズのポイント

このコードは、シートの順番に基づいて印刷部数を決めています。もし、シートの順番を変更したり、新しいシートを追加した場合は、インデックス番号(`ws.Index`)が変わるため、コードの修正が必要です。

さらに、`PrintOut`メソッドでは、印刷するプリンターやページ設定も変更できますので、必要に応じてプリンターの選択やページサイズの設定も行ってください。

まとめ

エクセルVBAを使って、複数のシートを部数ごとに印刷する方法について紹介しました。特定のシートだけを印刷したり、部数を変更したい場合には、シートごとに条件を設定することで簡単に対応できます。このような自動化を活用することで、印刷作業を効率化できます。

コメント

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