Excel VBA 他のプリンタからプリントしたい
こんにちは。
派犬事務員のコロ子です。
長い髪(耳)はお仕事の時はきちんと留めて、今日も頑張ってます。
Excel VBAで他のプリンターからプリントしたい
コロ子のパソコンは専用の白黒プリンタが繋がっていて、いつもはそこからプリントしているけど、VBAのコード上でカラープリンター(別のプリンター)からプリントしたい、という場合。
まず、「通常使うプリンター」に設定されているプリンターを調べてみよう。
イミディエイトウインドウに
?Application.ActivePrinter と入力する。
Canon LBP3100 on Ne10:だと分かる。
なるほどー。では、これを踏まえて変更したいプリンターを調べてみよう。
変更したいプリンターの名前を調べる
ファイルタブ→印刷 より
変更したいプリンターを選択する。
もう一度イミディエイトウインドウに
?Application.ActivePrinter と入力する。
変更先に指定したプリンターが
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
完成!