派遣事務員の迷走

派遣事務員コロ子。会社の犬。顔出しNG。常に迷走している。

Excel VBA 他のプリンタからプリントしたい

こんにちは。
派犬事務員のコロ子です。

長い髪(耳)はお仕事の時はきちんと留めて、今日も頑張ってます。

f:id:SNegishi:20190515215051p:plain
お仕事モード

Excel VBAで他のプリンターからプリントしたい

コロ子のパソコンは専用の白黒プリンタが繋がっていて、いつもはそこからプリントしているけど、VBAのコード上でカラープリンター(別のプリンター)からプリントしたい、という場合。


まず、「通常使うプリンター」に設定されているプリンターを調べてみよう。

イミディエイトウインドウに
?Application.ActivePrinter と入力する。

f:id:SNegishi:20190515220820p:plain

Canon LBP3100 on Ne10:だと分かる。

なるほどー。では、これを踏まえて変更したいプリンターを調べてみよう。

変更したいプリンターの名前を調べる

ファイルタブ→印刷 より
変更したいプリンターを選択する。

f:id:SNegishi:20190515221257p:plain


もう一度イミディエイトウインドウに
?Application.ActivePrinter と入力する。

f:id:SNegishi:20190515221818p:plain

変更先に指定したプリンターが
RICOH imagio MP C3301 RPCS on Ne02:
だと分かる。

ちなみに
プリンタの名前  on  ポート番号:
という形になっている。

RICOH imagio MP C3301 RPCS on Ne02:
  プリンター名      ポート番号


プリンターを変更するコードを書く

変更したいプリンターの名前とポート番号が分かったのでコードを書いてみよう。

Sub Printer_chenge()

Application.ActivePrinter = "RICOH imagio MP C3301 RPCS on Ne02:"
ActiveSheet.PrintOut

End Sub


プリンタを追加したりした場合、ポート番号が変更になる可能性もあるので
PrintOutメソッドの引数としてプリンタ名を指定することもできる。

Application.ActivePrinter = ”プリンタの名前 on ポート番号:”
 これでもOK!
ActiveSheet.PrintOut ActivePrinter:="プリンタの名前 "


他のエクセルも開いている状態でこのマクロを動かすと、
他のエクセルも変更したプリンターからプリントされてしまうので
「元に戻す処理」を入れよう。

Sub Printer_chenge()

Dim PrinterName As String

PrinterName = Application.ActivePrinter
ActiveSheet.PrintOut ActivePrinter:=" RICOH imagio MP C3301 RPCS "
Application.ActivePrinter = PrinterName

End Sub

完成!