VBA【成功率100%】【プリンター指定】【印刷】する方法を詳しく解説
Excelのマクロで印刷する時に使用する「PrintOut」を使用して
プリンターを指定して印刷する方法を詳しく解説します。
「PrintOut」を使用し、「ActivePrinter」でプリンター名を指定しているのに
指定したプリンターで印刷できない状況で困っていませんか。
ちゃんと「ActivePrinter」を指定したのに、指定したのとは違うプリンターが使用されて
イラつきますよね。
私も指定したプリンターで印刷ができなくて困っていました。
ですが、色々とVBAコードを試行錯誤した結果
100%指定したプリンターで印刷できるようになりましたので
その方法を解説したいと思います。
基本的な「PrintOut」の使用方法を知りたい方は、こちらをご覧ください。
「PrintOut」の引数についても解説しています。
< ---目次--- >
◆指定したプリンターで印刷する方法
VBAで指定したプリンターで印刷する方法として
よく紹介されているのは、「Microsoft WMI Scripting」を使用するコードだと思います。
VBAでプリンター名を取得して、それを「ActivePrinter:=”取得したプリンター名 Printer on Ne*”」
のような感じで指定する方法だと思います。
ですが、なぜか、私のパソコンでは、プリンター名を指定しても、できませんでした。
いくら「ActivePrinter」でプリンター名を指定しても、Excel側で設定されている既定のプリンターを
使用され、印刷してしまいます。
そこで次のコードのようにしたら指定したプリンターで印刷できました。
・VBAサンプルコード
Worksheets("Sheet1").PrintOut ActivePrinter:="\\http://192.168.1.210"
「\\」は半角の「¥¥」なので要注意。
上記コードをコピーしたら間違えなくて済みます。
・解説
VBAのサンプルコードをご覧になれば、わかると思いますが
「ActivePrinter」はプリンター名ではなく、IPアドレスで指定しています。
サンプルコードのIPアドレスは
私のプリンターのIPアドレスなので、ご自身の環境に合わせて変更してくださいね。
「192.168.1.210」この部分を、ご自身で使用する、プリンターのIPアドレスにしてください。
IPアドレスとは、ネットワーク上の住所みたいなものです。
ネットワーク上の住所と言っても
基本的に、ローカルネットワークだと思いますので
セキュリティ的な事は心配ありません。
そうなってくると、プリンターのIPアドレスってどうやって調べるのか知りたいですよね。
安心してください。
プリンターのIPアドレスの調べ方は、こちらで紹介しています。簡単ですよ。
◆VBA印刷関連おすすめリンク
プリンターを指定して印刷
「PrintToFile」と「PrToFileName」について
シートを指定して印刷
◆まとめ
なぜ、「ActivePrinter」でプリンター名を指定してもできないかは解析していませんが
IPアドレスを指定すれば、できます。
ですので、VBAでプリンターを指定して印刷したい場合は
「PrintOut」を使用し、その引数「ActivePrinter」にプリンターのIPアドレスで指定しましょう。
これを読んでも解決できない方、なにか不明点がある場合は
コメントして頂くか、こちらからお問い合わせしてください。