電子書籍の厳選無料作品が豊富!

エクセルで伝票を作り、それをVBAで二部印刷するようにしていました。(一部は運転手に、一部は保存用に)

今度、運転手の受け取り場所が変わり、そこのプリンターに出すように言われました。(プリンターナンバー「PR110034」と「PR110066」)

まず、こちらのPCから向こうにプリンターで印刷できるか確かめました。(「ファイル」-「印刷」-「プリンター」-「名前(変更)」で)OKです。
そこで早速VBAで作ったのですが、おかしなことにどちらか片方に二部印刷されてしまうのです。(34を先に設定すると34に二部、66を先に設定すると66に二部)

二台のプリンターに一部ずつ印刷するようにするには、マクロでどう書けばよいのでしょうか。
教えてください。

A 回答 (2件)

恐らくプリンタのハンドリングができていないのではないでしょうか。


まず、内部で扱われるプリンタ名を把握する必要があります。
VBエディタで「イミディエイトウィンドウ」を表示し、

? ActivePrinter

と入力してください。すると、「プリンタ名 on ポート名:」のような形式の文字列が得られると思いますので、これがアクティブプリンタのプリンタ名になります。
この後、運転手さんのところのプリンタに切り替えてみて、同様にイミディエイトウィンドウで実行してみると、向こうのプリンタ名も把握できるはずです。
こうしておいて、

Application.ActivePrinter = "xxxxx on Ne01:"
ActiveSheet.PrintOut
Application.ActivePrinter = "xxxxx on Ne00:"
ActiveSheet.PrintOut

のように記述すれば、それぞれ1枚ずつ印刷されると思います。プリンタ名は、最後の「:」まで正確に記述してください。イミディエイトウィンドウの結果をコピーするといいでしょうね。
また、アクティブプリンタを変更しますから、最初に向こうのプリンタで印刷してから、手元のプリンタで印刷するという順にしたほうが、アクティブプリンタを戻す手間が省けると思います。
    • good
    • 0
この回答へのお礼

返事が遅れてすみませんでした。
出来ました。
事務所で作って、現場のPCで動かしたからいけなかったと思います。
事務所では "PR110034 on No00:" となっていたので、二台とも No00: としてそのまま移植したのです。
現場のPCで見てみたら、 "PR110066 on LPT1:" となっていました。

そこで、"PR110034 on No00:" と "PR110066 on LPT1:" の組み合わせで出来るようになりました。ボード名というんですか。これが違っていたようです。

>最初に向こうのプリンタで印刷してから、
そうです、そうです。おっしゃるとおりでした。ありがとうございました。

お礼日時:2007/02/19 09:50

そのマクロを掲載していただく方が解決は早いと思いますが、とりあえず「ツール」→「マクロ」→「新しいマクロの記録」を選択し、手動で「

刷」→「PR110066に印刷」の操作を行いマクロを記録し、ご自身が作成したマクロと比較したら違いが分かると思いますよ
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/19 09:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!