パソコン教室くりっくのお客さんから

Excel 2010 になったら VBA でプリンターの切り替えができなくなったので来てほしい

との電話があり、お手伝いしてきました。

Excel 2007 まではプリンターを切り替える操作をマクロで記録すると以下の VBA プログラムが作成されたので楽だったんです。

Application.ActivePrinter = "NEC MultiWriter 5750C on Ne00:"

しかし、Excel 2010 になったら印刷画面が変わったために上記と同じようにマクロを記録しても VBA プログラムが記録されなくなってしまい、上記の1行のプログラムを手入力しなければいけません。

その際、プリンター名を調べるのは簡単なのですが、on に続くポート名が分かりづらいんです。

プリンターのプロパティを表示するとポートが USB001 とかIPアドレスになっているのですが、VBA では ne00 のような表記で指定しないとエラーになってしまいます。

VBA で指定するポート名を探す方法を調べてみたところ、レジストリエディターで

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

を開くと以下のような画面が表示されてポート名が分かりました。

Excel VBA で指定するポート名をレジストリエディターで探す

Excel VBA でアクティブプリンターを切り替えるためには上記のようにしないといけませんが、代替案として以下のようにする方法もあります。

ActiveSheet.PrintOut ActivePrinter:="NEC MultiWriter 5750C"

上記のように PrintOut メソッドでプリンターを指定する場合はポート名の指定が不要ですので、用途によって使い分けるようにすればいいですね。

投稿者プロフィール

対馬 俊彦
対馬 俊彦魚沼情報サービス・ベクトル公式テクニカルパートナー
【日本全国対応】WordPress のサイト制作、設定、カスタマイズ、トラブルでお悩み、お困りの方、ベクトル公式テクニカルパートナーがお手伝いいたします。

Lightning / VK Blocks / VK Filter Search のサポート、カスタマイズを得意としています。

遠方からのご依頼の場合、打ち合わせ・サポートを Zoom や電子メール・電話などを併用して行わせていただきます。

オンラインレッスン形式でのホームページ制作サポートも行っています。お客様ご自身でホームページを制作・運用する上でうまくいかない部分をサポートいたします。設定やカスタマイズを手伝ってもらいたい、同時に便利な使い方や設定方法、カスタマイズのやり方も知ることができたら...という方にご好評いただいています。

デザイナー様、制作業者様のサイト制作のお手伝いも数多く行っています。難しい部分のコーディング ( PHP / CSS / jQuery ) をやってほしい、いま人手が足りない等、お仕事の依頼をお待ちしています。

ご要望をうかがった上で費用見積り(無料)を提示させていただきますので、お気軽にお問い合わせください。

メールでのお問い合わせはこちら