SkillStack Lab 運営者の「スタック」です。
日々の業務で、数十枚ものシートを一つずつ開いては印刷ボタンを押す作業に、少し疲れていませんか。
エクセルの一括印刷をマクロのボタンで実行できるようにすれば、これまで手作業にかかっていた時間が一気に自由な時間へと変わります。
作り方の基礎から、PDF出力への応用、そして実行速度を上げるための設定など、実務で役立つ知識を整理しました。
VBAが動かないといったトラブルを解決し、作業効率を劇的に向上させていきましょう。
- 直感的に操作できるマクロボタンの配置とプロパティ設定
- 特定の条件やシートだけを選んで出力する柔軟なロジック
- 印刷処理を数十倍速くするための専門的な最適化コード
- PDF保存の自動化やエラーハンドリングによるツールの堅牢化

エクセルの一括印刷をマクロのボタンで作成する手順
自動化ツールを作る際、最初に考えるべきは「誰が、どうやって操作するか」というユーザーインターフェースです。
まずは、マクロを呼び出すための「ボタン」の種類と、その適切な設定方法について詳しく見ていきましょう。
フォームコントロールでのマクロボタン作成法
エクセルで自動化ボタンを作る際、最も安定していて初心者にもおすすめなのがフォームコントロールです。
「開発」タブの「挿入」からボタンアイコンを選び、シート上をドラッグするだけで配置できます。配置した瞬間に「どのマクロを実行しますか?」というダイアログが表示されるため、設定漏れが起きにくいのが特徴ですね。
ボタン配置の具体的なステップ
まずは開発タブが表示されているか確認しましょう。
もしなければ、リボンのユーザー設定から有効にする必要があります。
ボタンを配置した後は、右クリックから「テキストの編集」を選び、「一括印刷を実行する」といった分かりやすい名前に変えるのが親切です。
このボタンはOSの標準的なデザインに従うため、WindowsでもMacでもレイアウトが崩れにくいという大きなメリットがあります。
フォームコントロールのボタンは、マクロの登録が非常に簡単で、プログラミング初心者の方でも迷わず使いこなせますよ。
図形オブジェクトにマクロを登録してUIを改善
標準的なボタンのデザインでは物足りない、もっと「ツール感」を出したいという場合には、図形(オートシェイプ)をボタンとして活用しましょう。
四角形や丸、矢印など、エクセルで用意されているあらゆる図形をボタンに変えることができます。
角丸四角形にグラデーションをつけたり、影を落としたりすれば、モダンなアプリケーションのような見た目になります。
設定方法は簡単で、図形を描画した後に右クリックして「マクロの登録」を選択し、あらかじめ作成しておいた標準モジュールのプログラムを指定するだけです。
画像ファイルを挿入して、そのアイコンをクリックしたら印刷が始まる、という仕掛けも作れます。
視覚的に楽しいツールだと、毎日の仕事も少しだけ楽しくなるかもしれませんね。

ボタンが消えるのを防ぐセルに合わせない設定
せっかく配置したボタンが、列を挿入したりフィルターをかけたりした拍子に、ペシャンコに潰れたり画面外に消えたりした経験はありませんか。
これはボタンの初期設定が「セルに合わせて移動やサイズ変更をする」になっていることが原因です。
これを放置すると、ツールの保守性が著しく低下してしまいます。
ボタンを右クリックして「図形の書式設定(またはコントロールの書式設定)」を開き、「プロパティ」タブを確認してください。
ここで必ず「セルに合わせて移動やサイズ変更をしない」を選択しておきましょう。
これを徹底するだけで、シートの編集によってボタンが壊れるストレスから解放されます。
特定シートのみを選択して一括印刷するフラグ制御
「ブック内のすべてのシートを印刷する」というマクロは簡単ですが、実務では「このシートとあのシートだけ」といった選択が必要になる場面がほとんどです。
そこで私がおすすめしたいのが、「操作用シート」を作成して、そこに印刷したいシート名の一覧を作る方法です。
フラグ管理の仕組み
シート名の横に「印刷フラグ」という列を作り、「ON」と入力されている行のシート名だけをプログラムが読み取って印刷するようにコードを組みます。
これなら、マクロのコードを一行も触ることなく、ユーザーが自由に印刷対象をカスタマイズできます。
操作ミスを防ぐために、印刷前に「合計○枚印刷します。よろしいですか?」という確認メッセージを出す工夫も大切ですね。

| シート名 | 印刷フラグ | 備考 |
|---|---|---|
| 1月分請求書 | ON | 印刷対象 |
| 2月分請求書 | 印刷しない | |
| 3月分請求書 | ON | 印刷対象 |
条件付きで空白以外のデータを抽出し一括出力
大量の宛先リストや帳票を印刷する場合、データの入っていない行まで出力されてしまうのは避けたいところです。
マクロの中でAutoFilterを活用すれば、条件に合うデータだけを瞬時に抽出し、そのまま印刷ジョブに投げることができます。
たとえば、「金額が0円以上の行だけ」や「備考欄が空白でない行だけ」を絞り込んでから印刷する、といったロジックです。
これにより、紙資源の無駄遣いを防ぐだけでなく、確認作業の効率も大幅にアップします。
VBAの基礎的な書き方をもっと詳しく知りたいという方は、こちらの記事も参考にしてみてください。
>> エクセル自動化の例を徹底解説!VBAからAIまで最適な選び方

エクセルの一括印刷マクロのボタンを高速化する設定
一括印刷マクロを運用し始めると、次にぶつかる壁が「処理待ち時間」です。
100枚単位の印刷になると、エクセルが長時間フリーズしたようになり、不安になることもあるでしょう。ここでは、その待ち時間を劇的に減らすテクニックを紹介します。
ページ設定を高速化するPrintCommunication
エクセルVBAで最も時間がかかる処理の一つが、実は「ページ設定の変更」です。余白や印刷の向きを変えるたびに、エクセルはプリンターと通信を行おうとします。
これが積み重なると、驚くほど処理が重くなるのです。これを解決するのがApplication.PrintCommunicationプロパティです。

設定をFalseにすることで通信を一時停止し、すべての設定が終わった後にTrueに戻して一括で通信させます。
これにより、プリンターとの無駄な通信回数が減り、処理速度が数倍から数十倍に跳ね上がることがあります。大量の書類を扱うプロフェッショナルには必須の設定ですね。
詳細な仕様については、Microsoftの公式ドキュメントも確認しておくと安心です。 (出典:Microsoft Learn 『Application.PrintCommunication プロパティ (Excel)』)
PDF一括出力と保存パスの自動生成ロジック
今の時代、紙での印刷と同じくらい需要があるのが、PDFファイルへの変換です。
マクロを使えば、各シートを別々のPDFファイルとして、あるいは一つのPDFとして結合して保存することが可能です。ExportAsFixedFormat メソッドを使えば、Adobe Acrobatなどの高価なソフトがなくてもPDFを作成できます。

ファイル名の動的な設定
単に保存するだけでなく、ファイル名にセルの値(例えば取引先名や日付)を自動で組み込むようにしましょう。
さらに、実行した日の日付がついたフォルダを自動で作成し、そこに保存するようにすれば、ファイル整理の手間もゼロになります。デジタルアーカイブとしての管理が驚くほど楽になりますよ。
PDF出力時は、すでに同じ名前のファイルがある場合に上書きするか、名前に枝番を付けるかといったエラー処理を考えておくと、より親切なツールになります。
非表示シートの読み込みエラーを回避する対策
一括印刷のループ処理中に、作業用などで「非表示」にしているシートがあると、プログラムがそのシートを操作しようとしてエラー(1004など)が発生することがあります。
エクセル君は、見えていないシートに対して「Select」や「Activate」といった動作をすることが苦手なのです。
これを防ぐためには、If ws.Visible = xlSheetVisible Then という一文を加え、表示されているシートだけを処理の対象にするのが定石です。
ちょっとした配慮ですが、これだけで「途中で止まってしまう不安定なマクロ」を卒業できます。
プリンター不在によるマクロの停止を未然に防ぐ
特定のプリンター名をコードに直書きしていると、外出先やテレワーク環境でそのプリンターが見つからず、マクロが強制終了してしまいます。
実用的なツールにするなら、現在のパソコンで選ばれている「通常使うプリンター(ActivePrinter)」をそのまま利用する設計にしましょう。
どうしても特定のプリンターを使いたい場合は、事前にそのプリンターが接続されているかチェックするコードを入れるか、エラーが発生した際に「プリンターが見つかりません。デフォルトのプリンターで印刷しますか?」とユーザーに問いかける仕組みにすると、非常に誠実なインターフェースになりますね。
ActiveXコントロールの利用とセキュリティ対策
より高度なボタン操作(マウスを乗せたら色が変わる、など)を求めるならActiveXコントロールという選択肢もあります。これはWindowsの標準技術を利用したパーツで、見た目のカスタマイズ性が非常に高いのが魅力です。
しかし、セキュリティ設定によっては実行がブロックされたり、OSのアップデートの影響を受けやすかったりするデメリットもあります。
ActiveXコントロールを使用する場合は、ファイルの保存場所を「信頼できる場所」としてエクセルのセキュリティセンターで登録しておく必要があります。
特に不特定多数に配布するツールの場合は、トラブルを避けるために前述のフォームコントロールや図形ボタンを採用するのが無難かなと思います。

エクセルの一括印刷をマクロのボタンで完結するまとめ

今回は、エクセルの一括印刷をマクロのボタンで完全に自動化するための手法について解説しました。
単に印刷命令を書くだけでなく、ボタンの物理的な配置、処理の高速化、そしてPDF出力といった周辺技術を組み合わせることで、初めて「実戦で使えるツール」になります。
最初は難しく感じるかもしれませんが、一度仕組みを作ってしまえば、それ以降のあなたの労働時間は劇的に削減されるはずです。
この記事の内容は、一般的なビジネス環境での動作を想定していますが、お使いのPC環境やエクセルのバージョンによっては、微調整が必要になる場合もあります。
まずはテスト環境で十分に動作を確認してから、本番の業務に導入してくださいね。
もし不明な点があれば、最新の公式ヘルプを確認したり、詳しい人に相談してみるのも大切なステップです。
一歩ずつ、理想の自動化環境を構築していきましょう!
