【お知らせ】まとめて検索などの提供終了

エクセルのマクロ初心者ですが、ご教示いただければ幸いです。

業務で日々使用する様式をボタン一つで印刷できるよう、マクロを作成中です。
エクセルのファイルは共有ファイルサーバーに保存していて、各端末(例:WS0001、WS0002、WS0003…)から印刷したいと考えています。
各端末の「通常使うプリンタ」はPR0001なのですが、この様式はWS0001のUSBポートに繋がったPR0002から出力する必要があります。

WS0001とWS0002他から見た場合にプリンタのパスが異なるため、現状では

ActiveSheet.PrintOut ActivePrinter:="pr0002"
ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002"

と2つのマクロを別々のボタンに割り当てていますが、ボタンを押し間違えることがあり、何とか1つのマクロにできないかと考えています。
例えば「"pr0002"が無い場合は"\\Ws0001\pr0002"から出力しなさい」といような記述は可能でしょうか?

On Error でできるのかと考え、

On Error GoTo 0
ActiveSheet.PrintOut ActivePrinter:="pr0002"
On Error GoTo 0
ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002"

あるいは

On Error GoTo 0
ActiveSheet.PrintOut ActivePrinter:="pr0002"
ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002"

と記述してみましたが、何故かPR0001とPR0002と2枚出力されて、上手くいきません。

ネットワーク上のプリンタ出力先の記述は、

Application.ActivePrinter = "\\Ws0001\pr0002 on NeXX:"
ExecuteExcel4Macro _
"PRINT(1,,,1,,,,,,,,2,"""\\Ws0001\pr0002 on NeXX:"",,TRUE,,FALSE)"

と記述した方が確実なようですが、端末によってXXの数字が異なるようで、エラーになることがあります。

何卒よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

簡易的な方法では、


MsgBox Environ("COMPUTERNAME")
これで端末名が取れますから、それで分岐処理してもいいかもしれませんね。
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございました。
上手くいくか一度やってみます。

お礼日時:2011/07/15 17:05

ありゃ,ダメですね。

「無い」プリンタを指定してもエラーにはならない(標準のプリンタでするっと印刷されるだけ)ので,on error で分岐する方法は使えません。
失礼しました。

http://blog.livedoor.jp/akf0/archives/51472334.h …
http://blog.livedoor.jp/akf0/archives/51469843.h …
などの方法で事前にプリンタ一覧を取得し,あることが確認できたプリンタで印刷するように指定してください。


#「excel vba プリンタ 一覧」といったキーワードでぐぐってみると,関連情報が多数ヒットしますので参考にしてみて下さい。
    • good
    • 0
この回答へのお礼

再度色々と試してみましたが、やはり「無い」プリンタはエラーにはならないようですね。
もう少し色々な方法を試してみます。

お礼日時:2011/07/15 17:07

たとえば



sub macro1()
 on error goto errhandle
 ActiveSheet.PrintOut ActivePrinter:="pr0002"
 exit sub
errhandle:
 ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002"
end sub
    • good
    • 0

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング