【ExcelVBA・マクロ】印刷を実行する方法|プレビューなしでそのまま印刷するコード【コピペOK】

印刷を実行する方法 ExcelVBA

Excelで帳票や一覧表を扱っていると、次のようなことはありませんか?

  • 毎回「印刷」ボタンを押すのが面倒
  • 決まったシートをワンクリックで印刷したい
  • マクロの最後に自動で印刷したい

このような場合は、VBAで印刷を実行すると便利です。
一度コードを作っておけば、印刷作業を自動化できるので、日々の業務をかなり効率化できます。

この記事では、ExcelVBAで印刷を実行する基本コードから、印刷プレビュー・複数部印刷・特定シート印刷まで、初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • アクティブシートを印刷できる
  • 特定のシートだけ印刷できる
  • 印刷プレビューを表示できる
  • 部数指定や複数シート印刷ができる

一番基本:アクティブシートを印刷するコード

まずは一番シンプルなコードです。
今表示しているシートをそのまま印刷します。

Option Explicit

Sub PrintActiveSheet()

    ActiveSheet.PrintOut

End Sub

この PrintOut が、印刷を実行する基本命令です。


コードの意味を解説

ActiveSheetとは?

現在表示されているシートを指します。
つまり、ユーザーが見ているシートをそのまま印刷するという意味です。

PrintOutとは?

Excelで実際に印刷を実行するメソッドです。
ボタンを押さなくても、VBAから直接印刷できます。


印刷プレビューを表示したい場合

いきなり印刷するのではなく、先に内容を確認したい場合はこちらです。

Option Explicit

Sub PreviewActiveSheet()

    ActiveSheet.PrintPreview

End Sub

このコードなら、印刷前にプレビュー画面を表示できます。


特定のシートを印刷する方法

今のシートではなく、名前を指定して印刷したい場合はこちらです。

Option Explicit

Sub PrintSpecificSheet()

    Worksheets("請求書").PrintOut

End Sub

この例では、「請求書」という名前のシートを印刷します。


複数部印刷する方法

同じシートを2部、3部と印刷したい場合は、Copies を使います。

Option Explicit

Sub PrintTwoCopies()

    ActiveSheet.PrintOut Copies:=2

End Sub

これで2部印刷できます。


複数シートをまとめて印刷する方法

複数のシートを一括で印刷したい場合はこちらです。

Option Explicit

Sub PrintMultipleSheets()

    Worksheets(Array("請求書", "納品書", "一覧")).PrintOut

End Sub

配列でシート名を並べることで、複数シートをまとめて印刷できます。


印刷範囲を指定して印刷する方法

シート全体ではなく、特定の範囲だけを印刷したい場合は、先に印刷範囲を設定します。

Option Explicit

Sub PrintWithArea()

    With ActiveSheet
        .PageSetup.PrintArea = "A1:D20"
        .PrintOut
    End With

End Sub

このコードでは、A1:D20 の範囲だけを印刷します。


よく使う実務向けコード

「印刷前に確認を出して、Yesなら印刷する」という形は実務で非常によく使います。

Option Explicit

Sub ConfirmAndPrint()

    Dim result As VbMsgBoxResult

    result = MsgBox("このシートを印刷しますか?", vbYesNo + vbQuestion, "印刷確認")

    If result = vbYes Then
        ActiveSheet.PrintOut
        MsgBox "印刷を実行しました。", vbInformation
    Else
        MsgBox "印刷を中止しました。", vbExclamation
    End If

End Sub

誤印刷を防ぎたい場合に便利です。


応用①:印刷前にページ設定も整える

印刷前に用紙向きや余白を整えたい場合は、次のようにまとめて書けます。

Option Explicit

Sub SetupAndPrint()

    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .PaperSize = xlPaperA4
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With

    ActiveSheet.PrintOut

End Sub

これなら、印刷レイアウトを整えてから印刷できます。


応用②:ボタンを押して印刷する

図形やボタンにマクロを登録すれば、シート上のボタンから印刷できます。

Option Explicit

Sub SetPrintButton()

    ActiveSheet.Shapes("Button 1").OnAction = "PrintActiveSheet"

End Sub

こうすると、ボタン感覚で印刷できるようになります。


実務での活用例

  • 請求書をワンクリックで印刷する
  • 報告書を毎回同じ形式で印刷する
  • 入力後に確認して印刷する
  • 複数帳票をまとめて出力する

特に、毎日決まったシートを印刷する業務では、かなり効果があります。


よくあるエラーと対処法

① シート名が違う

Worksheets("請求書") の名前が実際のシート名と一致していないとエラーになります。
シート見出しの名前を正確に確認してください。

② 印刷範囲が思った通りにならない

以前の印刷範囲設定が残っていることがあります。
その場合は PageSetup.PrintArea を明示的に設定し直してください。

③ コードは正しいのにエラーになる

Webからコピーしたコードでは、全角記号や見えない特殊文字が混ざることがあります。
その場合は、エラーの出ている行を削除して手入力し直すと解決することがあります。


まとめ

  • 印刷の基本は PrintOut
  • プレビューは PrintPreview
  • 特定シート・複数部・複数シートにも対応できる
  • 実務では確認メッセージ付きが便利

印刷をVBAで自動化できるようになると、Excel業務の手間がかなり減ります。
特に帳票や報告書を繰り返し印刷する方には、とてもおすすめのマクロです。
ぜひ実務でも活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました