0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エクセルのVBAで複数シートを一括印刷

Last updated at Posted at 2023-05-06

概要

エクセルで Ctrl + P すると『現在選択しているシートのみ』の印刷プレビューとなる。
なので、複数シートを全て印刷したい場合、『シート選択してCtrl + P』を繰り返す必要がある。
これだと手間だし、印刷漏れ(シート選択漏れ)の可能性もある。

VBAで複数シートを一括印刷したい。

やり方(基本)

まず、下記のように3シートがある前提。
image.png
image.png
image.png
改ページなどの印刷レイアウトの調整がしやすいよう、『印刷ボタンを置くシート』『印刷対象のシート』を分けています。

印刷対象シート一覧が固定の場合のサンプル
Option Explicit


'『btn_1』という名前のボタンをクリックした時の動作
Private Sub btn_1_Click()

    Dim sheet_list_(1) As String
    sheet_list_(0) = "s1"
    sheet_list_(1) = "s2"
    
    '印刷用のボタンを置いているシートは印刷対象外。
    
    'シート名の配列を渡してあげることで、複数シートの一括印刷が可能。
    'Preview:=Trueでプレビュー画面を挟むことも可。
    Sheets(sheet_list_).PrintOut Preview:=True

End Sub

ボタンを押すと下記のように2シート分ひとまとめになった印刷プレビュー。
image.png
左上の印刷ボタンを押すと 『通常使うプリンター』 で即印刷。
(どのプリンターで印刷するかの選択肢的なものは出ない)

やり方(応用)

一番左のシートだけ除外して、他シートは全て印刷するサンプル
'『btn_1』という名前のボタンをクリックした時の動作
Private Sub btn_1_Click()

    
    '下記をやろうとすると『定数式が必要です』というコンパイルエラーになる。
    'Dim sheet_list_(Sheets.Count - 2) As String
    'なので一旦要素数無しで変数宣言してReDimで初期化が必要。
    
    '一番左の『印刷ボタンがあるシート』は除外する。
    'また、配列の初期化は『要素数』ではなく、『最大インデックス』なのでSheets.Countから-2。
    
    Dim sheet_list_() As String
    ReDim sheet_list_(Sheets.Count - 2)
    
    Dim i_ As Long
    '左から2番目シートから一番右端シートまでループ。
    For i_ = 2 To Sheets.Count
        '配列のインデックスは0スタートだが、Sheets()は1スタート。
        'またループが2からスタートしているので、配列のインデックスは-2する。
        sheet_list_(i_ - 2) = Sheets(i_).Name
    Next

    Sheets(sheet_list_).PrintOut Preview:=True


End Sub

非表示シートを印刷プレビューすると例外になるので注意

下記のような例外になる。

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

image.png

『エクセルファイル内に非表示シートがあると例外』
ではなく
『非表示シートを印刷プレビューすると例外』
です。

非表示シートが存在しても、それを印刷対象にしなければ例外にはならない。

参考サイトさん

バージョン

Windows 10 Pro 22H2 19045.2913
Microsoft Excel for Microsoft 365 MSO (バージョン 2304 ビルド 16.0.16327.20200) 32 ビット

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?