[[20150329020412]] 『プリンタを指定するマクロ』(スピッツてりあ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『プリンタを指定するマクロ』(スピッツてりあ)

初めまして。
マクロ初心者ですが、とても困っています。
どうかご教授ください。
よろしくお願いいたします。

あるブックのシート1(送り状)シート2(荷札)
にそれぞれのプリンタを指定するようにマクロを設定しました。

以前使用していたマクロが Application.ActivePrinter で 
これだとポート番号を指定しなければならなく、
番号が変更になる度に、数百のブックのマクロを手動で直さなければなりません。

しかし ActiveSheet.PrintOut ActivePrinter ですと
ポート番号がなくても指定できるので試してみたのですが、
プリンタは指定できたものの、ブックを開くとすぐ印刷が始まってしまいます。
自分のタイミングで印刷する時に、プリンタを毎回選ぶことなく、
切り替わってるだけで良いのです。

ポート番号を指定するマクロの場合は、ブックを開いて、即実行には
なりませんでした。

下記マクロでプリンタは指定できたのですが、ブックを開いたり、
シートを切り替えるたびに、即実行にならないようにすることは可能でしょうか?

これができないと、またポート番号のほうのマクロを使わなければならず、
USBを抜き差ししたり、他のドライバをインストールするたびに
簡単にポート番号が変更されてしまうので、また手動でマクロを変更する
ことになりとても大変です。

何かいい方法はないでしょうか?
どうかご教授ください。よろしくお願いいたします。

●thisworkbook に記述
Private Sub Workbook_Open()
Sheets("送り状").Activate

 Application.Goto Range("D6")
ActiveSheet.PrintOut ActivePrinter:="プリンタ1"
End Sub

●シート1 に記述
Private Sub Worksheet_Activate()
Sheets("送り状").Activate
ActiveSheet.PrintOut ActivePrinter:= "プリンタ1"
End Sub

●シート2 に記述
Private Sub Worksheet_Activate()
Sheets("荷札").Activate
ActiveSheet.PrintOut ActivePrinter:= "プリンタ2"
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 Private Sub Workbook_Open() 
 Private Sub Worksheet_Activate() 
 ではなく

 Private Sub Workbook_BeforePrint(Cancel As Boolean)
 で、印刷したいときだけ実行するようにすればどうでしょうか。
 ただし、他のプリンタで印刷できなくなりますが。

(マナ ) 2015/03/29(日) 09:43


 いままでは、どういったコードで処理しておられましたか?
 質問のテーマはらはずれますが、
 シート1といっておられるのが、"送り状"シートだとして、仮に開いたときに印刷されているとすれば
 2部印刷されていませんか?
 で、もしかしたら、状況によっては印刷されないこともあるのでは?
 ("送り状"シートをアクティブにした状態でブックを保存して、開き直すと、印刷はされないと思うのですが)

 それはさておき、運用がわからないのですが、"送り状"シートなり、"荷札"シートなりを選択しただけで自動印刷という運用なんでしょうか?

 もし、そうなら、ThisWorkbook_Open では、"送り状"や"荷札"シート以外をActivateするだけのコードにされたらいいかもしれません。

 操作要件がわからないので、スベっていたらごめんなさい。

(β) 2015/03/29(日) 09:50


マナさん、βさんお返事どうもありがとうございました。
お二人のご意見を参考にマクロを組んでみたのですが、
初心者すぎて、いまいちうまくいきませんでした。
申し訳ないです。
今は、フォームボタンを作ってクリックしたら
印刷ができるように作成しています。

丁寧なお返事ありがとうございました!
(スピッツてりあ) 2015/03/30(月) 16:32


 >今は、フォームボタンを作ってクリックしたら 
 >印刷ができるように作成しています。

 印刷には、マクロを使わないのかと考えていました。
 マクロからの印刷でしたら、ボタンに登録するマクロを

 >ActiveSheet.PrintOut ActivePrinter:= "プリンタ1" 
 や
 >ActiveSheet.PrintOut ActivePrinter:= "プリンタ2" 

 にするだけで問題ないのでは?

 >Private Sub Workbook_Open() 
 や
 >Private Sub Worksheet_Activate() 
 は不要です。

(マナ ) 2015/03/30(月) 18:39


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.