こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロ印刷時にプリンタを指定できますか?

エクセル2002を使用しています。VBAはまったくわかりません。
マクロの自動登録で印刷を記録すると、通常使うプリンタから
出力されるようですが、LANでプリンタ複数使用可能な環境です
ので、いちいち通常使うプリンタを変更するのではなく、マクロ
実行時にプリンタを選択したく思います。
 因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー
したSheet2を印刷するというマクロです。このマクロのどの部分に
コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか?
もしくはマクロではプリンタを選択できないのでしょうか?
どうぞよろしくお願いいたします。

******************************************************************
Sub 印刷()
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Sheet1").Select
End Sub
*******************************************************************

投稿日時 - 2002-09-22 09:36:23

QNo.363920

暇なときに回答ください

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

#4です。

WinAPIを使ってプリンタ一覧を取得。
VBAでActivePrinterを取得。
ユーザーの指示によりActivePrinterを設定。
印刷処理。
ActivePrinterを元に戻す。

ってことをやるには相当の技術力が必要になります。
ここはひとつ、
Application.Dialogs(xlDialogPrint).Show
こうして印刷ダイアログを表示するだけにとどめておいてはどうでしょうか。
あとはユーザーが好きなプリンタを選択して[OK]を押せば印刷されます。

投稿日時 - 2002-09-23 01:43:40

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(5)

あのー・・・
使用環境が書いてないのですが・・・

・複数のPCで使用するマクロなのですか?
・それとも1台のPCで使用するが、出力するプリンタをフレキシブルに変更したい、ってことですか?

前者なら各PCの標準プリンタに出力されるので問題ないんじゃないかと思いますが・・・
後者であれば他の方の回答を参考にしてください。

投稿日時 - 2002-09-22 15:48:17

お礼

回答ありがとうございます。
説明足らずで申し訳ありませんでした。
環境的には前者+後者のようなものです。
すなわち、各PCともに複数のプリンタドライバを入れている
ため(インクジェットとレーザプリンタなど)、出力の都度
どのプリンタに出力するのか選択したいのであります。

投稿日時 - 2002-09-23 01:03:44

ANo.3

まずは、マクロの記録時に、プリンターを選択するようなアクションをしてみてください。
そうすると、

Application.ActivePrinter = "******"

みたいなスクリプトがPrintOutの前に書かれませんか?

手っ取り早そうなのは、プリンターごとにマクロを用意することでしょうか・・
もしくは、
"******"っていうのを変数にします。例えば、

myPrinter = "*******"
Application.ActivePrinter = myPrinter

てな感じで。
ということは、myPrinterの値を入力により制御できればいいでしょう。
例えば、inputbox関数で、何らかの数値を入力させて、
その数値に対してmyPrinterの値を変更するとか。

どうでせう?

投稿日時 - 2002-09-22 11:24:07

お礼

回答ありがとうございます。
できるかどうかわかりませんがこのように試してみようと
思います。

投稿日時 - 2002-09-23 01:05:33

ANo.2

PrintOutの前に、ActivePrinterを入れるとどうですか。
(例)Application.ActivePrinter = "USBPRN01 の Canon BJ S300"
ActivePrinter プロパティは取得・設定とも可能とあり。
テストできる環境に無いので曖昧で済みません。
(ListBoxなどで、=の右辺に持ってくるプリンタのIDを
決めさせてセットする事も可能かと思います。)

投稿日時 - 2002-09-22 11:22:03

お礼

回答ありがとうございます。
ActivePrinterプロパティというのをヘルプで調べて
やってみようと思います。

投稿日時 - 2002-09-23 01:07:24

ANo.1

 PrintPreviewでプレビューしてから、印刷を選ぶ、というのはだめなんでしょうか?
 簡単に解決するにはこの方法しかないと思います。

投稿日時 - 2002-09-22 09:57:15

お礼

回答ありがとうございます。
試しにやってみました。
欲張りなことを言ってすみませんが、できれば
プリンタを指定したらプレビュー無しに印刷で
きればと考えております。

投稿日時 - 2002-09-23 00:58:02

あなたにオススメの質問