ExcelVBA 特定のプリンターを指定してシートやブックを印刷する基本コード

 

ExcelVBA 特定のプリンターを指定してExcelのシートやワークブックを印刷することができます。これにより、ユーザーが手動でプリンターを選択する手間を省き、スムーズに印刷作業を行えます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBA 特定プリンター指定の利用

以下のようなシーンで利用されます。

  1. 特定のプリンターに直接出力する
    • 部署ごとに異なるプリンターを使う場合や、大量印刷を効率化したい
  2. 印刷ジョブを自動化
    • 定期的に決まった内容を印刷するシステムの構築
  3. エラー防止
    • プリンターの選択ミスを防ぎ、作業効率を向上

Excel VBA 特定プリンター指定|使い方とポイント

使い方
  1. プリンター名を取得する
    • Application.ActivePrinter プロパティを使用して現在のプリンターを確認します。
  2. プリンターを設定する
    • Application.ActivePrinter にプリンター名を設定します。
  3. 印刷を実行する
    • PrintOut メソッドを使って指定した内容を印刷します。
ポイント
  1. プリンター名の正確さ
    • 設定するプリンター名はシステムで認識されている名前でなければなりません。
  2. ネットワークプリンター
    • ネットワーク経由のプリンターの場合、接続が有効であることを確認してください。
  3. 印刷環境依存
    • プリンター名がPC環境によって異なる場合があるため、他のPCで動作させる際には確認が必要です。
  4. エラーハンドリング
    • プリンターがオフラインの場合や設定ミスの場合にエラー処理を実装することが重要です。

 

プリンター接続確認の基本について知りたい方は(こちらをクリックすると説明表示)
1.プリンター名の確認(Windows)
  1.  画面左下の「スタートボタン」をクリック
  2.  「設定(歯車マーク)」をクリック
  3.  「デバイス」をクリック
  4.  「プリンターとスキャナー」をクリック

登録されているプリンター一覧が表示されます。

■ ここで見るポイント
表示されている名前が「パソコンに登録されているプリンター名」です。
VBAで使う名前は少し違う場合がありますが、まずはここで存在を確認することが大事です。

2.ネットワークプリンターの接続確認

「実際に印刷できるか試す」

  1.  Excelやメモ帳を開く
  2. 印刷画面を開く
  3.  対象のネットワークプリンターを選ぶ
  4.  印刷ボタンを押す

印刷できた → 問題なし。

エラーになる → 接続できていない

■ よくある原因

  • プリンターの電源が入っていない
  • Wi-Fiが切れている
  • 社内ネットワークに接続していない
他のPCで動かすときの注意

同じプリンターでもPCによって名前が違うことがあります。

  • あなたのPC
    Microsoft Print to PDF on Ne01:
  • 別のPC
    Microsoft Print to PDF on Ne03:

※VBAは名前が一致しないと動きません。このような設定であれば、他のPCで使うときエラーになります。
PCごとに名前が違う可能性があるので毎回確認して対応する。

 

Excel VBA 特定プリンター指定のサンプルコード

現在のプリンター名を取得

Option Explicit

Sub GetCurrentPrinter()
    MsgBox "現在のプリンター: " & Application.ActivePrinter
End Sub

 

自分の実力を客観的にチェックしたい。そんな方のために、自分に合った学習スタート地点がわかる無料の選択問題集をご用意しました。(VBAエキスパートベーシック資格試験から抜粋した問題です)

無料138問でいまの実力をチェック

555点以上ならベーシック合格レベル、345〜550点はベーシック理解途中、340点以下は基礎理解不足※ご安心ください。この問題をされた人の情報は一切残りません。実力のチェックができる問題集で、クリックすぐにスタートではありません。解説内容の下に問題があります)

 

特定のプリンターを設定して印刷

  1. 現在使っているプリンターをいったん別の箱に保存
  2. 一時的に使いたいプリンターを指定
  3. 2で指定したプリンターにする
  4. 一時的に指定したプリンターがない場合は、エラーメッセージ表示後終了
  5. 印刷する
  6. 別の箱に入れた、元々使っていたプリンターに戻す。

大きくは下記の流れ

覚えて 一時的に変更して 印刷 元に戻す
Option Explicit

Sub SetPrinterAndPrint()
    Dim targetPrinter As String
    Dim currentPrinter As String

    ' 現在のプリンターを保存
    currentPrinter = Application.ActivePrinter

    ' 設定したいプリンター名
    targetPrinter = "Microsoft Print to PDF on Ne01:"

    ' プリンターを設定
    On Error Resume Next
    Application.ActivePrinter = targetPrinter
    If Err.Number <> 0 Then
        MsgBox "指定したプリンターが見つかりません。"
        Exit Sub
    End If
    On Error GoTo 0

    ' 印刷実行(例: アクティブシートを印刷)
    ActiveSheet.PrintOut

    ' 元のプリンターに戻す
    Application.ActivePrinter = currentPrinter
End Sub

 

プリンター名を確認するには、Application.ActivePrinter を取得して、正確な名前を調べておくとよいです。ネットワークプリンターでは、プリンター名に接続ポート(例: on Ne02:)が含まれる場合があります。プリンターが見つからない場合にエラーメッセージを表示して処理を中断する仕組みを追加しましょう。

これを使えば、作業の効率化と印刷エラーの削減が可能です。

 

処理ごとに印刷するプリンターが異なる場合
  • 処理ごとに印刷するプリンター名をシートに保存
  • 実行時にそのシート参照、処理で出力先を決定して、印刷すればスムーズに処理できます

 

 

生成AIで業務改善を始めたい方へ

Excelの業務改善に興味がある方は、生成AIを活用することで、さらに効率化できる可能性があります。

目的に合わせて、こちらの記事をご覧ください。