• ベストアンサー

二台のプリンターに印刷したい

エクセルで伝票を作り、それをVBAで二部印刷するようにしていました。(一部は運転手に、一部は保存用に) 今度、運転手の受け取り場所が変わり、そこのプリンターに出すように言われました。(プリンターナンバー「PR110034」と「PR110066」) まず、こちらのPCから向こうにプリンターで印刷できるか確かめました。(「ファイル」-「印刷」-「プリンター」-「名前(変更)」で)OKです。 そこで早速VBAで作ったのですが、おかしなことにどちらか片方に二部印刷されてしまうのです。(34を先に設定すると34に二部、66を先に設定すると66に二部) 二台のプリンターに一部ずつ印刷するようにするには、マクロでどう書けばよいのでしょうか。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • fmajin
  • ベストアンサー率61% (75/122)
回答No.2

恐らくプリンタのハンドリングができていないのではないでしょうか。 まず、内部で扱われるプリンタ名を把握する必要があります。 VBエディタで「イミディエイトウィンドウ」を表示し、 ? ActivePrinter と入力してください。すると、「プリンタ名 on ポート名:」のような形式の文字列が得られると思いますので、これがアクティブプリンタのプリンタ名になります。 この後、運転手さんのところのプリンタに切り替えてみて、同様にイミディエイトウィンドウで実行してみると、向こうのプリンタ名も把握できるはずです。 こうしておいて、 Application.ActivePrinter = "xxxxx on Ne01:" ActiveSheet.PrintOut Application.ActivePrinter = "xxxxx on Ne00:" ActiveSheet.PrintOut のように記述すれば、それぞれ1枚ずつ印刷されると思います。プリンタ名は、最後の「:」まで正確に記述してください。イミディエイトウィンドウの結果をコピーするといいでしょうね。 また、アクティブプリンタを変更しますから、最初に向こうのプリンタで印刷してから、手元のプリンタで印刷するという順にしたほうが、アクティブプリンタを戻す手間が省けると思います。

noname#153814
質問者

お礼

返事が遅れてすみませんでした。 出来ました。 事務所で作って、現場のPCで動かしたからいけなかったと思います。 事務所では "PR110034 on No00:" となっていたので、二台とも No00: としてそのまま移植したのです。 現場のPCで見てみたら、 "PR110066 on LPT1:" となっていました。 そこで、"PR110034 on No00:" と "PR110066 on LPT1:" の組み合わせで出来るようになりました。ボード名というんですか。これが違っていたようです。 >最初に向こうのプリンタで印刷してから、 そうです、そうです。おっしゃるとおりでした。ありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

そのマクロを掲載していただく方が解決は早いと思いますが、とりあえず「ツール」→「マクロ」→「新しいマクロの記録」を選択し、手動で「PR110034に印刷」→「PR110066に印刷」の操作を行いマクロを記録し、ご自身が作成したマクロと比較したら違いが分かると思いますよ

noname#153814
質問者

お礼

返事が遅れてすみませんでした。 ありがとうございました。おかげで出来ました。

関連するQ&A