Excelで作業をしていると、特定のシートや範囲をすぐに印刷したいことがあります。
その際に便利なのが、VBAを使った「印刷ボタン」です。
印刷ボタンを作成すると、ワンクリックで印刷処理を自動実行できるため、作業効率が向上します!
本記事では、VBAを使った印刷ボタンの作成方法や、実践的な活用例を解説します。
目次
Excelに印刷ボタンを追加する
Excelで印刷ボタンを作成する方法は、主に「フォームコントロールのボタン」を使うのが一般的です。
✅ 印刷ボタンを作成
- Excelの「開発」タブを開く
- 「開発」タブがない場合 →
ファイル
→オプション
→リボンのユーザー設定
で「開発」にチェックを入れる
- 「開発」タブがない場合 →
- 「挿入」→「フォームコントロール」→「ボタン」を選択
- ワークシート上にボタンを配置
- 「マクロの登録」 ウィンドウで新規マクロを作成
- 以下のVBAコードを記述し、登録する
✅ シート全体をワンクリックで印刷
Sub PrintSheet()
ActiveSheet.PrintOut
End Sub
📌ボタンをクリックすると、アクティブなシートをそのまま印刷します!
✅ プレビューを印刷前に表示するボタン
Sub PrintPreview()
ActiveSheet.PrintPreview
End Sub
📌 「印刷」ではなく「プレビュー」ですので、内容を確認してから印刷可能です!
✅範囲を指定して印刷するボタン
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
📌データがある範囲のみ印刷!
📌データがついても、印刷範囲を手動で設定しなくても大丈夫!
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
を印刷!
印刷ボタンをカスタマイズする
ボタンのデザインをカスタマイズすると、見た目がわかりやすくなります。
✅ ボタンのテキストを変更
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" |
データ範囲を動的に印刷 | lastRow とlastCol モデル設定 |
1 ページに囲まれて印刷 | .FitToPagesWide = 1, .FitToPagesTall = 1 |
両面印刷 | Duplex:=True |
全シートを印刷 | For Each ws In ThisWorkbook.Sheets: ws.PrintOut: Next ws |
おすすめの活用方法
✅ボタンを使えばワンクリックで印刷できる!
✅プレビュー表示を追加すれば、間違い防止に使えます!
✅データが追加されるなら「動的に印刷範囲を設定」がおすすめ!
✅ 「全シート印刷」や「シート特定印刷」も業務で便利!