
ExcelVBA 特定のプリンターを指定してExcelのシートやワークブックを印刷することができます。これにより、ユーザーが手動でプリンターを選択する手間を省き、スムーズに印刷作業を行えます。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBA 特定プリンター指定の利用
以下のようなシーンで利用されます。
- 特定のプリンターに直接出力する
- 部署ごとに異なるプリンターを使う場合や、大量印刷を効率化したい
- 印刷ジョブを自動化
- 定期的に決まった内容を印刷するシステムの構築
- エラー防止
- プリンターの選択ミスを防ぎ、作業効率を向上
Excel VBA 特定プリンター指定|使い方とポイント
- プリンター名を取得する
- Application.ActivePrinter プロパティを使用して現在のプリンターを確認します。
- プリンターを設定する
- Application.ActivePrinter にプリンター名を設定します。
- 印刷を実行する
- PrintOut メソッドを使って指定した内容を印刷します。
- プリンター名の正確さ
- 設定するプリンター名はシステムで認識されている名前でなければなりません。
- ネットワークプリンター
- ネットワーク経由のプリンターの場合、接続が有効であることを確認してください。
- 印刷環境依存
- プリンター名がPC環境によって異なる場合があるため、他のPCで動作させる際には確認が必要です。
- エラーハンドリング
- プリンターがオフラインの場合や設定ミスの場合にエラー処理を実装することが重要です。
- 画面左下の「スタートボタン」をクリック
- 「設定(歯車マーク)」をクリック
- 「デバイス」をクリック
- 「プリンターとスキャナー」をクリック
登録されているプリンター一覧が表示されます。
■ ここで見るポイント
表示されている名前が「パソコンに登録されているプリンター名」です。
VBAで使う名前は少し違う場合がありますが、まずはここで存在を確認することが大事です。
「実際に印刷できるか試す」
- Excelやメモ帳を開く
- 印刷画面を開く
- 対象のネットワークプリンターを選ぶ
- 印刷ボタンを押す
印刷できた → 問題なし。
エラーになる → 接続できていない
■ よくある原因
- プリンターの電源が入っていない
- Wi-Fiが切れている
- 社内ネットワークに接続していない
同じプリンターでも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エキスパートベーシック資格試験から抜粋した問題です)
555点以上ならベーシック合格レベル、345〜550点はベーシック理解途中、340点以下は基礎理解不足 (※ご安心ください。この問題をされた人の情報は一切残りません。実力のチェックができる問題集で、クリックすぐにスタートではありません。解説内容の下に問題があります)
特定のプリンターを設定して印刷
- 現在使っているプリンターをいったん別の箱に保存
- 一時的に使いたいプリンターを指定
- 2で指定したプリンターにする
- 一時的に指定したプリンターがない場合は、エラーメッセージ表示後終了
- 印刷する
- 別の箱に入れた、元々使っていたプリンターに戻す。
大きくは下記の流れ
| ① | ② | ③ | ④ |
| 覚えて | 一時的に変更して | 印刷 | 元に戻す |
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を活用することで、さらに効率化できる可能性があります。
目的に合わせて、こちらの記事をご覧ください。

