【エックスサーバー】独自ドメイン無料キャンペーン実施中!《2019年11月29日(金)18:00まで》

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

【Excel VBA マクロ】印刷設定をボタン1つで完了させる


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.コードをモジュールに貼り付ける

  1. マクロを使用したいExcelファイルを開く
  2. [Alt]+[F11]でVBEを開く
  3. 「挿入」>「標準モジュール」を選択する
  4. 立ち上がったウィンドウにコードを貼り付ける

2.マクロの実行ボタンを作成する

  1. VBEからExcelの画面に戻る
  2. 「開発」タブ>「挿入」>ボタン(フォームコントロール)を選択する
  3. セル上をドラッグしてボタンを作成する
  4. 「マクロの登録」ダイアログから「印刷」を選択し、「OK」を選択する
  5. ボタン上で右クリック>「テキストの編集」を選択する
  6. ボタンの表示名をわかりやすい名前に変更する

3.ファイルをxlsm形式で保存する

  1. 「ファイル」>「名前を付けて保存」を選択する
  2. ファイルの種類の中から「Excel マクロ有効ブック」を選択し、「保存」を選択する

印刷設定をボタン1つで完了させるマクロの実行結果

マクロの実行結果をスクショでお見せします。

その前にまずは実行前のスクショを。以下が実行前のスクショになります。

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

「印刷範囲を自由選択」の実行結果

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

「印刷範囲を固定」の実行結果

【Excel VBA マクロ】印刷設定をボタン1つで完了させる

印刷範囲をあらかじめ設定しているので、マクロを実行するとすぐにプレビュー画面に切り替わります。

おわりに

いかがでしたか?

今回は、印刷設定をボタン1つで完了させるマクロをご紹介しました。

常に同じ設定値で印刷したい場合は、今回ご紹介したマクロをぜひ活用してみてください。

用紙の向きや余白などの値を一瞬で設定することができるので、時短になりますよ!

↓ちなみにこんなマクロもあります。

Excel VBA 自作マクロその1「重複削除」- 重複するデータをボタン1つで削除【Excel VBA マクロ】重複するデータをボタン1つで削除