※当サイトはアフィリエイト広告を利用しています。
Excelの印刷に関して、
「前回と同じ印刷設定で印刷したいのに、いつの間にか変わってて、設定し直すはめになった……」
そんな経験、ありませんか?
印刷設定は、そのシートで最後に使われた設定が引き継がれます。
ですので、誰かが印刷設定を変えて保存したりすると、こういったことが起こってしまいます。
こうなると印刷設定を再設定しなければいけないので大変です。
今回はそんな時に便利な、印刷設定をボタン1つで完了させるマクロをご紹介します。
このマクロを使えば、用紙の向きや余白などの値を一瞬で設定することができます。
目次
印刷設定をボタン1つで完了させるマクロのコード
今回ご紹介するマクロは、以下の2種類です。
印刷範囲を自由選択 | 印刷範囲を手動で選択してから印刷設定を行う |
---|---|
印刷範囲を固定 | あらかじめ設定された印刷範囲で印刷設定を行う |
どちらもコピペOKですが、使用は自己責任でお願いします。
印刷範囲を自由選択
Sub 印刷()
On Error Resume Next
Dim PrintMessage As String
Dim myRange As Range
PrintMessage = "印刷範囲を選択してください"
Set myRange = Application.InputBox(Prompt:=PrintMessage, Type:=8)
If myRange Is Nothing Then ' キャンセルした場合に処理を抜ける
Exit Sub
End If
Application.PrintCommunication = False 'プリンターとの通信を遮断(高速化のため)
With ActiveSheet.PageSetup
.PrintArea = myRange.Address ' 印刷範囲
.Orientation = xlLandscape ' 用紙の向き
.PaperSize = xlPaperA4 ' 用紙のサイズ
.LeftMargin = Application.CentimetersToPoints(1.8) ' 左余白
.RightMargin = Application.CentimetersToPoints(1.8) ' 右余白
.TopMargin = Application.CentimetersToPoints(2.4) ' 上余白
.BottomMargin = Application.CentimetersToPoints(1.9) ' 下余白
.HeaderMargin = Application.CentimetersToPoints(0.8) ' ヘッダー
.FooterMargin = Application.CentimetersToPoints(0.8) ' フッター
.CenterHorizontally = True ' 水平中央
.CenterVertically = True ' 垂直中央
.FitToPagesWide = 1 ' 全ての列を1ページに収める
.FitToPagesTall = 1 ' 全ての行を1ページに収める
End With
Application.PrintCommunication = True ' プリンターとの通信を再開
ActiveSheet.PrintPreview ' プレビュー
End Sub
このマクロを実行すると入力ダイアログが表示されるので、印刷範囲を手動で選択し、「OK」を選択してください。
選択範囲で印刷設定が行われ、プレビュー画面に切り替わります。
印刷範囲を固定
Sub 印刷()
Application.PrintCommunication = False 'プリンターとの通信を遮断(高速化のため)
With ActiveSheet.PageSetup
.PrintArea = "印刷範囲" ' 印刷範囲
.Orientation = xlLandscape ' 用紙の向き
.PaperSize = xlPaperA4 ' 用紙のサイズ
.LeftMargin = Application.CentimetersToPoints(1.8) ' 左余白
.RightMargin = Application.CentimetersToPoints(1.8) ' 右余白
.TopMargin = Application.CentimetersToPoints(2.4) ' 上余白
.BottomMargin = Application.CentimetersToPoints(1.9) ' 下余白
.HeaderMargin = Application.CentimetersToPoints(0.8) ' ヘッダー
.FooterMargin = Application.CentimetersToPoints(0.8) ' フッター
.CenterHorizontally = True ' 水平中央
.CenterVertically = True ' 垂直中央
.FitToPagesWide = 1 ' 全ての列を1ページに収める
.FitToPagesTall = 1 ' 全ての行を1ページに収める
End With
Application.PrintCommunication = True ' プリンターとの通信を再開
ActiveSheet.PrintPreview ' プレビュー
End Sub
このマクロを実行すると、「印刷範囲」という名前の付いたセル範囲で印刷設定が行われ、プレビュー画面に切り替わります。
マクロ実行前に、印刷したいセル範囲に名前の定義で「印刷範囲」という名前を付けておいてください。
コードの解説
先程紹介したコードのうち、ポイントとなるコードについて解説します。必要に応じて変更してください。
Orientation
Orientationは、用紙の向きに関するプロパティです。
- 縦向き:xlPortrait
- 横向き:xlLandscape
PaperSize
PaperSizeは、用紙のサイズに関するプロパティです。
- A3:xlPaperA3
- A4:xlPaperA4
- B3:xlPaperB3
- B4:xlPaperB4
- 封筒10号:xlPaperEnvelope10
- 封筒11号:xlPaperEnvelope11
- 封筒12号:xlPaperEnvelope12
◯◯Margin
◯◯Marginは、左・右・上・下・ヘッダー・フッターの余白に関するプロパティです。
それぞれの余白は、()内に数値で設定します。
Center◯◯
Center◯◯は、水平方向・垂直方向の印刷位置に関するプロパティです。
- 中央寄せ:True
- 中央寄せしない:False
FitToPages◯◯
FitToPages◯◯は、縦方向・横方向の拡大・縮小に関するプロパティです。
- 1ページに収める:1
- 指定しない:False
マクロの使い方
1.コードをモジュールに貼り付ける
- マクロを使用したいExcelファイルを開く
- [Alt]+[F11]でVBEを開く
- 「挿入」>「標準モジュール」を選択する
- 立ち上がったウィンドウにコードを貼り付ける
2.マクロの実行ボタンを作成する
- VBEからExcelの画面に戻る
- 「開発」タブ>「挿入」>ボタン(フォームコントロール)を選択する
- セル上をドラッグしてボタンを作成する
- 「マクロの登録」ダイアログから「印刷」を選択し、「OK」を選択する
- ボタン上で右クリック>「テキストの編集」を選択する
- ボタンの表示名をわかりやすい名前に変更する
3.ファイルをxlsm形式で保存する
- 「ファイル」>「名前を付けて保存」を選択する
- ファイルの種類の中から「Excel マクロ有効ブック」を選択し、「保存」を選択する
印刷設定をボタン1つで完了させるマクロの実行結果
マクロの実行結果をスクショでお見せします。
その前にまずは実行前のスクショを。以下が実行前のスクショになります。
「印刷範囲を自由選択」の実行結果
「印刷範囲を固定」の実行結果
印刷範囲をあらかじめ設定しているので、マクロを実行するとすぐにプレビュー画面に切り替わります。
おわりに
いかがでしたか?
今回は、印刷設定をボタン1つで完了させるマクロをご紹介しました。
常に同じ設定値で印刷したい場合は、今回ご紹介したマクロをぜひ活用してみてください。
用紙の向きや余白などの値を一瞬で設定することができるので、時短になりますよ!
↓ちなみにこんなマクロもあります。
【Excel VBA マクロ】重複するデータをボタン1つで削除