VBAで自動化 VBA一覧 ファイル・印刷操作 印刷設定

【VBA】印刷ボタンを作成してワンクリックで印刷する方法

Excelで作業をしていると、特定のシートや範囲をすぐに印刷したいことがあります。
その際に便利なのが、VBAを使った「印刷ボタン」です​​。

印刷ボタンを作成すると、ワンクリックで印刷処理を自動実行できるため、作業効率が向上します!
本記事では、VBAを使った印刷ボタンの作成方法や、実践的な活用例を解説します。

Excelに印刷ボタンを追加する

Excelで印刷ボタンを作成する方法は、主に「フォームコントロールのボタン」を使うのが一般的です。

✅ 印刷ボタンを作成

  1. Excelの「開発」タブを開く
    • 「開発」タブがない場合 → ファイルオプションリボンのユーザー設定で「開発」にチェックを入れる
  2. 「挿入」→「フォームコントロール」→「ボタン」を選択
  3. ワークシート上にボタンを配置
  4. 「マクロの登録」 ウィンドウで新規マクロを作成
  5. 以下のVBAコードを記述し、登録する

✅ シート全体をワンクリックで印刷

Sub PrintSheet()

ActiveSheet.PrintOut

End Sub

📌ボタンをクリックすると、アクティブなシートをそのまま印刷します!

✅ プレビューを印刷前に表示するボタン

Sub PrintPreview()

ActiveSheet.PrintPreview

End Sub

📌 「印刷」ではなく「プレビュー」ですので、内容を確認してから印刷可能です!

【VBA】印刷プレビューを表示する方法と活用例

✅範囲を指定して印刷するボタン

Sub PrintSelectedRange()

ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
ActiveSheet.PrintOut

End Sub

📌A1:D20の範囲だけを印刷!
📌PrintAreaを変更すれば範囲をカスタマイズ可能!

✅ データがある範囲を自動検出して印刷

データが追加される場合は、最後の行や列を検出し、印刷範囲を自動設定すると便利です。

Sub PrintDynamicRange()

Dim lastRow As Long, lastCol As Long
Dim ws As Worksheet
Set ws = ActiveSheet

' 最終行と最終列を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

' 印刷範囲を動的に設定
ws.PageSetup.PrintArea = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)).Address

' 印刷
ws.PrintOut

End Sub

📌データがある範囲のみ印刷!
📌データがついても、印刷範囲を手動で設定しなくても大丈夫!

【VBA】最終行:取得

【VBA】最終列を取得:範囲指定

1 ページにして印刷するボタン

大きなデータを印刷するとページが分割されることがあります。
これを1 ページに言って印刷する設定を VBA で適用できます。

✅ 1 ページに自動調整して印刷

Sub PrintFitToOnePage()

With ActiveSheet.PageSetup

.Zoom = False ' 自動縮小を有効化
.FitToPagesWide = 1 ' 横1ページ
.FitToPagesTall = 1 ' 縦1ページ

End With

ActiveSheet.PrintOut

End Sub

📌自動的にサイズを調整し、1ページに言って印刷!

【VBA】印刷時に 1 ページにまとめる方法と応用テクニック

✅ 両面印刷を設定するボタン

プリンターの設定により、VBAで両面印刷を制御することも可能です

Sub PrintDoubleSided()

Application.ActivePrinter = "プリンター名"
ActiveSheet.PrintOut Copies:=1, Collate:=True, _

Duplex:=True ' 両面印刷を有効にする

End Sub

📌プリンター名を指定し、両面印刷を設定!
📌プリンターが両面印刷に対応している必要があります!

複数シートを一括印刷するボタン

✅ すべてのシートを印刷

Sub PrintAllSheets()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Sheets

ws.PrintOut

Next ws

End Sub

📌ブック内の全シートをまとめて印刷!

✅ 特定のシートのみ印刷

Sub PrintSpecificSheets()

Sheets(Array("Sheet1", "Sheet2")).PrintOut

End Sub

📌Sheet1だけSheet2を印刷!

【VBA】複数シートを印刷する方法と活用例

印刷ボタンをカスタマイズする

ボタンのデザインをカスタマイズすると、見た目がわかりやすくなります。

✅ ボタンのテキストを変更

ActiveSheet.Shapes("Button 1").TextFrame.Characters.Text = "印刷開始"

📌ボタンの名前(Button 1)を変更しました!

✅ ボタンの背景色を変更

With ActiveSheet.Shapes("Button 1").Fill

.ForeColor.RGB = RGB(255, 100, 100) ' 赤色に設定

End With

📌ボタンの色を変更し、目立たせる!


まとめ

機能VBAコード
シート裏面印刷ActiveSheet.PrintOut
印刷プレビューを表示ActiveSheet.PrintPreview
特定範囲のみ印刷.PageSetup.PrintArea = "$A$1:$D$20"
データ範囲を動的に印刷lastRowlastColモデル設定
1 ページに囲まれて印刷.FitToPagesWide = 1, .FitToPagesTall = 1
両面印刷Duplex:=True
全シートを印刷For Each ws In ThisWorkbook.Sheets: ws.PrintOut: Next ws
おすすめの活用方法

ボタンを使えばワンクリックで印刷できる!
プレビュー表示を追加すれば、間違い防止に使えます!
データが追加されるなら「動的に印刷範囲を設定」がおすすめ!
「全シート印刷」や「シート特定印刷」も業務で便利!

-VBAで自動化, VBA一覧, ファイル・印刷操作, 印刷設定