SkillStack Lab 運営者の「スタック」です。
毎日の業務で繰り返す印刷作業を少しでも楽にしたい、そう感じたことはありませんか。
エクセルのマクロで印刷ボタンの作り方や設定に関する知識があれば、複雑な手順をワンクリックで完結させることが可能です。
VBAを使ってボタンが反応しないトラブルを回避する方法や、図形を使ったおしゃれなボタンを印刷しないようにするテクニックまで、実務で役立つ情報を網羅しました。
私自身も業務改善の中でこれらの技術を学び、今では手放せないスキルとなっています。

- マクロを実行するための開発タブやボタンの配置方法
- フォームコントロールと図形を使ったボタンデザインの違い
- 印刷プレビューの表示やPDF出力を自動化するVBAコード
- ボタン自体を印刷用紙に出力させないためのプロパティ設定
エクセルのマクロで印刷ボタンを作る基本手順
まずは、エクセルで自動化を始めるための土台作りから始めましょう。
普段は見慣れない「開発タブ」の設定から、実際にボタンを配置してマクロを動かすまでの基本的な流れを解説します。ここさえ押さえれば、単純なクリック操作でプログラムを動かせるようになりますよ。
開発タブを表示して準備する
エクセルの初期状態では、マクロを扱うための「開発」タブが表示されていません。
これは、誤って設定を変更しないようにするためのマイクロソフトの配慮なのですが、開発者にとっては必須のツールです。これがないと始まらないので、最初に表示設定を行いましょう。
リボンのカスタマイズ手順
手順はとても簡単です。以下のステップで進めてみてください。
- エクセルの上部にあるリボン(メニューバー)の、ボタンがない空いているところを右クリックします。
- 表示されたメニューの中から「リボンのユーザー設定」を選択します。
- 設定画面が開くので、右側の「メインタブ」の一覧から「開発」という項目を探します。
- 「開発」の左にあるチェックボックスにチェックを入れて、「OK」を押します。

一度この設定を行えば、エクセルを再起動しても「開発」タブは表示されたままになります。毎回設定する必要はありません。
これで、リボンの一番右側に「開発」タブが出現したはずです。ここから、マクロの記録やボタンの配置、VBAエディタの起動など、自動化に必要なすべての操作が行えるようになります。
フォームコントロールでの作り方
もっとも基本的で、かつ不具合が起きにくいのが「フォームコントロール」を使ったボタン作成です。
見た目は少し古風なグレーのボタンですが、その分動作の安定性は抜群です。
「ActiveXコントロール」という似た機能もありますが、こちらはWindows Updateの影響で突然動かなくなるトラブルが稀にあるため、最初はフォームコントロールを使うのが無難です。
ボタンの配置とマクロの登録
具体的な作成手順は以下の通りです。
- 「開発」タブをクリックし、「挿入」ボタン(道具箱のようなアイコン)を押します。
- 表示されたメニューの上段にある「フォームコントロール」の中から、左上の「ボタン(フォーム)」アイコンをクリックします。
- シート上で、ボタンを配置したい場所をマウスでドラッグして描画します。
- ボタンを描き終えると、自動的に「マクロの登録」画面が開きます。
- リストから、そのボタンに関連付けたいマクロ名を選択して「OK」を押します。
WindowsとMacの両方で互換性が高いため、社内のいろいろな人が使うツールを作る場合は、このフォームコントロールを選ぶのが一番安全な選択肢と言えます。

おしゃれな図形ボタンのデザイン
「グレーのボタンだと味気ない」「もっと直感的なアイコンを使いたい」という場合は、エクセルの「図形(オートシェイプ)」をボタンとして使う方法がおすすめです。
最近のモダンなダッシュボードや業務アプリ風のツールでは、こちらが主流になりつつあります。
図形をボタン化するステップ
自由なデザインでボタンを作ってみましょう。
- 「挿入」タブの「図形」から、角丸四角形や円など好きな形を選んで描画します。
- 図形の「書式設定」で、色を会社のブランドカラーに変えたり、影をつけて立体的にしたりします。
- テキストボックスとして「印刷」や「PDF保存」といった文字を入力し、中央揃えにします。
- 作成した図形を右クリックしてメニューを開き、「マクロの登録」を選択します。
- 実行したいマクロを選んで「OK」をクリックします。
これで、見た目はただの図形ですが、カーソルを合わせると指のマークに変わり、クリックするとプログラムが走る立派なボタンに変身します。
プリンターのアイコン画像を貼り付けてボタン化することも可能ですよ。
ボタンを印刷しない設定の方法
印刷ボタンを作ったときによくある失敗が、「印刷した紙にボタンまで印刷されてしまう」というものです。
請求書や納品書に「印刷ボタン」が印字されていたら、少し格好悪いですよね。画面上にはあってほしいけれど、紙には出したくない。そんな時は「非印刷」の設定を行いましょう。
プロパティの設定手順
フォームコントロールや図形の場合、設定は以下の手順で行います。
- 対象のボタンを右クリックして選択状態にします(左クリックだとマクロが動いてしまうので注意してください!)。
- メニューから「コントロールの書式設定」または「図形の書式設定」を選択します。
- 設定ウィンドウが開いたら、「プロパティ」という項目を探します。
- その中にある「オブジェクトを印刷する」というチェックボックスのチェックを外して、「OK」を押します。

| コントロールの種類 | 設定箇所 | 推奨設定 |
|---|---|---|
| フォームコントロール | 書式設定 > プロパティ | チェックを外す |
| 図形(オートシェイプ) | 図形の書式設定 > プロパティ | チェックを外す |
| ActiveXコントロール | プロパティ画面 > PrintObject | False に変更 |
この設定をしておけば、プレビュー画面やPDF出力、実際の印刷時にはボタンが透明になり、スッキリとした帳票が出力されます。
プロの仕事として、必ず設定しておきたいポイントです。
マクロのセキュリティとブロック解除
近年、セキュリティの強化により、インターネットからダウンロードしたファイルや、共有サーバー上のファイルに含まれるマクロが実行できないケースが増えています。
ボタンを押しても反応しなかったり、「セキュリティリスク」という赤いバーで警告が出たりする場合は、「Webのマーク(Mark of the Web)」が原因かもしれません。
ブロックを解除する方法
自分が作成したファイル、または信頼できる同僚から送られてきたファイルであれば、以下の手順でブロックを解除できます。
- エクスプローラーで対象のファイルを右クリックし、「プロパティ」を開きます。
- 「全般」タブの一番下に「セキュリティ」という項目が表示されているか確認します。
- 「許可する(またはブロックの解除)」というチェックボックスにチェックを入れて、「OK」をクリックします。
(出典:Microsoft Learn『インターネットからのマクロは、Office で既定でブロックされます』)

注意:出所が不明なファイルに対してこの操作を行うのは大変危険です。悪意のあるプログラムが実行される可能性があるため、必ず自分が信頼できると判断したファイルのみで行ってください。
また、社内でツールを定常的に共有する場合は、ファイルサーバーの特定のフォルダをエクセルの「信頼できる場所」として登録しておくと、毎回警告が出ずにスムーズに利用できるようになります。
「ファイル」>「オプション」>「トラストセンター」から設定可能です。
💡 記事を読みながら「自分でイチからボタンを設定するのは少し難しそう…」と感じていませんか?
ブログのテキストや分厚い専門書でVBAのコードを解読するのは、実は非常にハードルが高く、9割の人が途中で挫折してしまいます。
確実に実務で使えるスキルを身につけるなら、文字を追うのではなく「プロの画面の動きを動画でそのまま真似する」のが一番の近道です。
元社内SEの視点で、小難しい理論は抜きにして、明日からの面倒な手作業を劇的にラクにする「超・実践的なUdemy神講座」だけを厳選しました。
※Udemyは頻繁に90%OFFセール(1,500円前後)を行っています。絶対に定価では買わず、まずはセールが開催されていないかチェックして、賢く自己投資を始めてみてください!
\ 動画を見てマネするだけで自動化 /
エクセルのマクロ印刷ボタンの実践テクニック
ボタンの配置ができたら、次は中身となる「VBAコード」を書いていきましょう。単に印刷するだけでなく、プレビューを出したり、PDF化したりと、実務で本当に使えるコードを紹介します。
コピペして使えるようにしていますので、ぜひ試してみてください。
VBAで印刷プレビューを表示
いきなりプリンターから紙が出てくる設定は、紙の無駄遣い(設定ミスなど)につながるためおすすめしません。
実務では、必ず一度プレビュー画面を表示させるのが鉄則です。
VBAで印刷を行う PrintOut メソッドに、引数として Preview:=True を追加するだけで実装できます。
Sub PrintWithPreview() ' アクティブなシートの印刷プレビューを表示します ' これにより、ユーザーは印刷前にレイアウトを確認できます ActiveSheet.PrintOut Preview:=True End Sub
このコードをボタンに登録すれば、ワンクッション置いて確認ができるため、誤印刷のリスクを大幅に減らすことができます。

特にページ設定が複雑な帳票では必須の機能です。
印刷範囲を自動で調整する
データが増えるたびに印刷範囲を手動で直していませんか? VBAを使えば、データの最終行を自動的に取得して、印刷範囲を動的にセットすることが可能です。
「データは100行あるのに、設定が古くて50行目までしか印刷されなかった」といったミスを防げます。
最終行を取得して範囲設定するコード

Sub DynamicPrintArea() Dim ws As Worksheet Dim lastRow As Long
Set ws = ActiveSheet
' A列の下から上に向かって検索し、データがある最終行を取得
' これが最も一般的で信頼性の高い最終行の取得方法です
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' データが空の場合のエラー回避(ヘッダー行しかない場合など)
If lastRow < 2 Then
MsgBox "データがありません。", vbExclamation
Exit Sub
End If
' 印刷範囲をA1からF列の最終行までに設定
ws.PageSetup.PrintArea = "A1:F" & lastRow
' プレビューを表示して確認
ws.PrintOut Preview:=True
End Sub
このスクリプトを使えば、行数が10行でも1000行でも、ボタン一つでピッタリの範囲が印刷されます。「最後のページが白紙で出てくる」なんていう悩みからも解放されますね。
PDF出力を自動化するコード
最近は紙への印刷よりも、PDF化してメール添付やチャット送信する機会の方が多いかもしれません。
ExportAsFixedFormat メソッドを使えば、ファイル名を自動生成して保存するところまで完全自動化できます。
Sub ExportToPDF() Dim fileName As String
' 現在の日時を含めたファイル名を生成(例:請求書_20250205_123000.pdf)
' これにより、同じファイル名での上書き保存を防げます
fileName = ThisWorkbook.Path & "\請求書_" & Format(Now, "yyyymmdd_hhmmss") & ".pdf"
' PDFとして出力
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=fileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True ' 出力後に自動でPDFを開いて確認する
End Sub
このボタンを作っておけば、「名前を付けて保存」からファイル形式を選んで……という一連の手間がゼロになります。
特に、毎日大量のファイルを処理する経理業務などで威力を発揮します。
複数シートを一括印刷する
月次報告書などで、表紙と明細など複数のシートをセットで印刷したい場合もありますよね。
一つひとつのシートを開いて印刷するのは非効率です。そんな時は配列(Array)を使ってシートを「作業グループ」化してから印刷命令を出します。
Sub PrintSelectedSheets() ' Sheet1とSheet2を選択状態にして、まとめて印刷ジョブを送信 ' 配列内には、実際のシート名をダブルクォーテーションで囲んで記述します Worksheets(Array("Sheet1", "Sheet2")).Select
' 選択されたシートを1部ずつ印刷
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' 処理が終わったら、必ず最初のシートだけを選択してグループを解除する
' これを忘れると、後の操作ですべてのシートが変更されてしまうリスクがあります
Worksheets("Sheet1").Select
End Sub
これを活用すれば、両面印刷機能を持つプリンターで、別々のシートを裏表に印刷することも可能になります。

💡 「エクセルでの業務効率化」に限界を感じていませんか?
マクロを使ったPDF出力の自動化は非常に便利ですが、毎月の請求書や給与明細を「エクセルから1件ずつPDF化してメール添付する」という業務フロー自体を維持し続けるのは、実はかなりの時間と労力(コスト)がかかります。
「関数やマクロのエラーに怯える日々から抜け出したい」
「誰かが休むと業務が回らない『エクセル属人化』を根本から解消したい」
そう感じたことのある総務・経理・バックオフィス担当者に向けて、元社内SE・現役管理職の視点で「日々の定型業務を劇的に楽にする脱エクセル(SaaS)ツール」を厳選しました。
いきなり会社で稟議を通す必要はありません。時間を無駄にせず業務を効率化したい方は、まずはノーリスクの無料登録や資料請求を活用して、専用ツールの圧倒的な「ラクさ」をご自身の目で確かめてみてください。
\ エクセルの手作業を今日でやめるなら /
エクセルのマクロ印刷ボタンによる業務改善
ここまで紹介したテクニックを使えば、「ファイル」メニューを開いて設定を確認して……という数十秒の作業が、わずか1秒の「ワンクリック」に短縮されます。
しかし、最大のメリットは時間の短縮だけではありません。
ボタンに一連の処理(範囲設定やプリンター指定、PDF化など)をプログラムとして記憶させることで、「人による操作ミス」を物理的に無くせることにあります。
新人さんが操作しても、ベテラン社員が操作しても、まったく同じ品質の帳票が出力される。これこそが、業務標準化の第一歩であり、DX(デジタルトランスフォーメーション)の基礎となります。
ぜひ、あなたの作成する帳票にも「魔法のボタン」を配置して、チーム全体の業務効率を上げてみてくださいね。

