• ベストアンサー

エクセルから印刷時のプリンターの設定をしたい

いつもお世話になっております。 常時使用するプリンターが2台あり、機能と印刷単価が違っており、1台は数枚以下&カラー用、もう1台は大量印刷と裏紙印刷で使い分けているのですがこれをエクセルのマクロ(ボタン)で設定することは出来ないでしょうか? 一応、マクロの記録で印刷を記録してみましたが、印刷の実行はできましたが、やはりプリンターの選択とかトレイの指定はできませんでした。 何かアイディアは内でしょうか? 使うソフトはメインはエクセル、後はワードです。 毎日のことでつい「大量にカラーでしかも非常に時間がかかる」ようなウッカリが後を絶たないので何か改善策が有りましたらご教示お願いします。

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

  • ベストアンサー
  • papis
  • ベストアンサー率70% (3652/5176)
回答No.5

基本的に私のスタンスも#2氏なものですので... >プリンターを選択したらそれぞれのプリンターのデフォルト設定で使用するつもり ということは、小生の一番最初の提案である、 「プリンタ選択のダイアログを出してそれで選ばせる方法」 というわけですので、#1を実現する方法としては -- Application.Dialogs(xlDialogPrinterSetup).Show -- をすれば、プリンターリストが表示されます。 あとは、ボタンなりで呼び出して実行するだけですよ。 上記をそのまま検索すると、 先人の経験と苦労がいろいろ出てきますから、 それを使わせてもらうのが良いでしょう。 そして今度は質問者様自身がそれを他の人に展開してあげてください。

akira0723
質問者

お礼

本当に何度もありがとうございました。 取り敢えずこ上記で試行してみます。 ウッカリ直前に使用したプリンターで「印刷」することは激減しそうです。

その他の回答 (4)

  • papis
  • ベストアンサー率70% (3652/5176)
回答No.4

乗りかかった船なので(笑) >プリンターの設定を忘れたり、カラー、モノクロを間違えたりして結局コストと時間がかかっている ということは、プリンターの機種の選択だけでなく、 その先、プロパティで、カラー/モノクロや、給紙カセットの選択などを させているのかと推測します。 であれば、すでに説明済みのプリンター選択に加えて、 あらかじめ、 そういった設定済みのプリンタードライバーを用意しておき、 マクロでは、その設定済みプリンターだけ選ばせて印刷実行すれば、 お悩みは解消できると思いますよ。 イメージとしては、 現在:「機種A」「機種B」をマクロで選ばせ、 さらに[プロパティ]で給紙カセットやカラーモノクロを選択させる。 ご提案: 機種A-1(数枚カラーの設定を諸々仕込み済み) 機種A-2(数枚モノクロの設定を諸々仕込み済み) 機種B-1(大量用のカセットや両面などの設定を諸々仕込み済み) 機種B-2(裏紙用の設定を諸々仕込み済み) (以下省略) をマクロで選ばせて印刷ボタンを押すだけ。 同一機種のドライバーを複数個インストールする方法は ベアコンピューティングさんの記事 https://www.bearcomputing.jp/printer-copy-windows10/ を参考に。なお、記事中の 「8.プリンター名を変更したい場合は変更し、次へをクリックします。」 のところで、マクロで表示されて利用者が迷わない、 用途や設定を把握しやすい名前にしておきます。 ドライバーの複数追加が終わったら、 WordやExcelの印刷メニューからでは無く、 コントロールパネルのデバイスとプリンターから それぞれの印刷設定を開いて、 給紙装置やカラーモノクロの選択、用紙の種類など、 プリンタードライバーの各種値を必要なものに指定しておいて、 [適用]→[OK]することで、その名前のドライバーでの、 アプリからの印刷時の初期値を変更できます。 あとは、例のマクロでプリンターを選ばせ、 利用者は細かな設定を意識せず、印刷実行するだけ、という寸法です。 (当然、マクロでは、プリンター名がその名前になってます)

akira0723
質問者

補足

度々の早々のご回答に感謝!! ご回答の内容は当方の100%の要求事項でありますが、そこまでは高望みしておらず、プリンターを選択したらそれぞれのプリンターのデフォルト設定で使用するつもりでした。 つまり、プリンターAは「モノクロでトレイ2」、「Bはカラーでトレイ1」で、マクロボタンで「A」「B」のクリックだけで裏紙印刷と新品カラー印刷できる。 ルーティンの印刷なのでこれでほとんどの場合OKでそれ以外の時はマニュアルで設定する。で十分なのですが。。。 マクロを「PERSONAL XLSB」に登録して、エクセルにボタンを登録する。と考えているのですが。。。 ご回答で一番の問題は当方の知識レベルです。 上記の内容で出来るだけ簡単なコードをご教示いただければありがたいのですが。。。 プリンターのポートを調べてみたら、2台の内1台はIPアドレスともう1台は非常に長い英数字の羅列の2種類あるのですが、どちらでもうまくいきませんでした。 「乗りかかった船」が沈みそうで大変申し訳ありませんがよろしくお願いしたく。 レベルが違い過ぎるようなので、船が沈む前に降りていただいても致し方なく。。。

  • papis
  • ベストアンサー率70% (3652/5176)
回答No.3

No.1です >、ポートの設定が分かりません。 であれば、名前を指定して実行か、コマンドプロンプトにて regedit にてレジストリエディタを起動して、 -- コンピューター\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices -- を参照すればよいです。 ネットワークプリンターなら右ペインの [名前]がプリンター名、 [データ]がおそらく「winspool,[ポート名]」となっていると思います。 この[名前]と[ポート]を渡せば実現できると思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ここに質問する前に https://pandaignis.com/wp/39756.html など読んでやってみて、行き詰まった箇所をここに質問してはどうか。 上記サイトは、Googleで「vba 印刷 プリンタ指定」で照会して、出てきたものの1つ。

akira0723
質問者

お礼

ご回答ありがとうございます。 参考になりました。

  • papis
  • ベストアンサー率70% (3652/5176)
回答No.1

2種類のプリンターを使い分けるのは、 質問者様だけで無く、職場の同僚など複数名、ということでしょうか。 もし、2台の機種名(実際にはWindowsのデバイスとプリンターに表示されるアイコンの名前)がそもそも違っているのなら、 VBAのApplicationオブジェクトのDialogsプロパティにて、 xlDialogPrinterSetupを呼び出すと、プリンタ選択のダイアログがでるので、 それで選ばせる方法。 より具体的に明示するならば、 2台のプリンターを使い分ける出力元PCの デバイスとプリンターに表示されるアイコン名と ポート名が同じである事が前提になりますが、 ApplicationオブジェクトのActivePrinterプロパティが、 印刷時に使用するプリンタドライバとポート名なので、 Application.ActivePrinter = "[プリンタアイコンの名前] on [ポート名]:" としてあげることで、明示的にプリンタを指定/固定することができます。 マクロを書かれている方なら、 上記プロパティでご自身のプリンターリストを呼び出してみれば、 あとはすぐに実装いただけるのではないでしょうか。

akira0723
質問者

補足

早々のご回答ありがとうございます。 ご推察の通り複数の担当者が2台のプリンターを目的に応じて使い分けることになっているのですが、プリンターの設定を忘れたり、カラー、モノクロを間違えたりして結局コストと時間がかかっている状況です。 よって、マクロで何とかならないかと思った次第です。 残念ながら当方マクロ初心者のビギナークラスなのでNETで調べて割と簡単そうだったのでアレコレやってみたのですが、ポートの設定が分かりません。 先ずポートNoを確認する方法も分からず、IPアドレスが分かったので試してみたのですが駄目でした。 ポート名またはプリンターのアドレスの確認方法、もしくはIPアドレスで出来る方法(コード)は無いでしょうか? 質問内容が変わってしまい、負んぶに抱っこで申し訳ありませんがよろしくお願いします。