Excel。マクロ37。複数シートを作業グループにして、まとめて印刷するには
<Excel VBA:シートの作業グループ>
ちょっと知っているだけで、日ごろの業務が時短・改善することができる可能性を秘めているマクロ。
今回は、複数のシートを作業グループにして、
まとめて印刷できるようにExcel VBAで作っていきます。
次のように複数のシートがあります。
最初に複数のシートを作業グループにして、
シート見出しの色を変更することからご紹介していきます。
ここでは、作業グループのやり方の一例を兼ねております。
【シート見出しの色をまとめて設定する】
シート見出しの色を設定すること自体は簡単なのですが、少数のシートならともかく、大量でしかも、
シートごとの間がある場合に選択するのが、結構面倒ですね。
そこで、次のようなExcel VBAの構文を作ってみましょう。
Sub 複数シート見出しの色()
Dim wsheet As Worksheet
'グループ化されていないかの確認
If ActiveWindow.SelectedSheets.Count > 1 Then
ActiveSheet.Select
End If
Sheets("大崎").Select
Sheets("品川").Select False
Sheets("東京").Select False
For Each wsheet In ActiveWindow.SelectedSheets
wsheet.Tab.ColorIndex = 3
Next wsheet
ActiveSheet.Select
End Sub
簡単に説明していきましょう。
Dim wsheet As Worksheet
お馴染みの変数宣言で、wsheet という変数を用意しました。
If ActiveWindow.SelectedSheets.Count > 1 Then
ActiveSheet.Select
End If
この3行は、すでに、
作業グループになっていないかの確認をするブロックになっています。
ActiveWindow.SelectedSheets.Count は、
アクティブになっているシートが何枚あるのかを数えてくれます。
それが1より多い場合は、アクティブになっているシートが複数ある。
すなわち、作業グループになっているということがわかります。
その場合は、
ActiveSheet.Select 作業グループを解除するには、
別のシートをクリックすれば解除できますので、その処理をしています。
Sheets("大崎").Select
Sheets("品川").Select False
Sheets("東京").Select False
ここで、作業グループにしたいシートを設定していきます。
For Each wsheet In ActiveWindow.SelectedSheets
wsheet.Tab.ColorIndex = 3
Next wsheet
そして、シート見出しの色を設定するブロックですね。
For Each wsheet In ActiveWindow.SelectedSheets で、
アクティブになっているワークシートコレクションの分だけ
繰り返す処理を行います。
wsheet.Tab.ColorIndex = 3 は、
赤色でシート見出しの色を設定する行ですね。
最後の ActiveSheet.Select で、作業グループを解除しています。
では、実行してみましょう。
このように、複数シートの見出しの色を設定することができました。
それでは、複数シートをまとめて印刷する構文修正していきましょう。
【複数シートをまとめて印刷】
複数シートをまとめて印刷するには、シートを選択しなければなりません。そこで、先ほどのExcel VBAの構文を次のようにアレンジすればOKです。
Sub 複数シート印刷()
Dim wsheet As Worksheet
'グループ化されていないかの確認
If ActiveWindow.SelectedSheets.Count > 1 Then
ActiveSheet.Select
End If
Sheets("大崎").Select
Sheets("品川").Select False
Sheets("東京").Select False
ActiveWindow.SelectedSheets.PrintOut
ActiveSheet.Select
End Sub
変更箇所は、シート見出しの色を設定したブロックを、
ActiveWindow.SelectedSheets.PrintOut とするだけですね。
この行で、印刷してくれます。
なお、次の一行に変更すれば、
『印刷プレビュー』で確認することができます。
ActiveWindow.SelectedSheets.PrintPreview
昨今のバージョンのバックステージビューではなくて、
かつて御厄介になった『印刷プレビュー』を表示することができます。
このように、複数シートをまとめて印刷したりすることができますので、
ちょっと知っていると意外と便利かもしれませんね。