Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7667 / 13645 ツリー ←次へ | 前へ→

【37546】プリンターの選択 春まき 06/5/11(木) 13:17 質問[未読]
【37550】Re:プリンターの選択 ちくたく 06/5/11(木) 15:40 回答[未読]
【37571】Re:プリンターの選択 春まき 06/5/12(金) 11:40 発言[未読]
【37561】Re:プリンターの選択 06/5/11(木) 21:32 発言[未読]
【37572】Re:プリンターの選択 春まき 06/5/12(金) 11:53 発言[未読]
【37604】Re:プリンターの選択 HiroHiro 06/5/12(金) 19:10 発言[未読]
【37624】Re:プリンターの選択 春まき 06/5/13(土) 6:25 発言[未読]
【37627】Re:プリンターの選択 HiroHiro 06/5/13(土) 6:54 発言[未読]
【37642】Re:プリンターの選択 春まき 06/5/13(土) 19:14 発言[未読]
【37574】Re:プリンターの選択 ハチ 06/5/12(金) 12:12 発言[未読]
【37576】Re:プリンターの選択 春まき 06/5/12(金) 13:19 発言[未読]
【37579】Re:プリンターの選択 Jaka 06/5/12(金) 13:54 発言[未読]
【37625】Re:プリンターの選択 春まき 06/5/13(土) 6:43 発言[未読]
【37650】解決しました 春まき 06/5/14(日) 10:09 お礼[未読]
【37580】Re:プリンターの選択 ハチ 06/5/12(金) 14:00 回答[未読]
【37626】Re:プリンターの選択 春まき 06/5/13(土) 6:44 発言[未読]
【37651】試してみました。 春まき 06/5/14(日) 10:18 お礼[未読]

【37546】プリンターの選択
質問  春まき  - 06/5/11(木) 13:17 -

引用なし
パスワード
   よろしくお願いします。XPパソコンにUSBで2台のプリンターにつないでいます。
複数のシートの中の一部のシートだけ通常使ってない方のプリンターで印刷できるようにマクロボタンを作っています。マクロ記録を使い以下のコードを使いました。

  ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
    PaperSize = xlPaperB4
    BlackAndWhite = False
    Zoom = 75
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="プリンタB on Ne01:", Collate:=True

しかしこのマクロボタンを使うと以後通常使うプリンターがプリンターAに設定してあるのにプリンターBで印刷されるようになってしまします。
その為一行コードを加えてみました。

  ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
    PaperSize = xlPaperB4
    BlackAndWhite = False
    Zoom = 75
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="プリン  ターB on Ne01:", Collate:=True
Application.ActivePrinter = "プリンターA on Ne04:"

すると今度は最初からプリンターAで印刷してしまい、プリンターBに切り替わらなくなりました。

ボタンを押したときだけBで印刷し、印刷後Aの方をアクティブにしてくれる
ようにするにはどうしたらいいでしょうか。

【37550】Re:プリンターの選択
回答  ちくたく  - 06/5/11(木) 15:40 -

引用なし
パスワード
   春まき さん
こんにちは。

あんまりかしこいコードではないですが、
呼んでみたらうまくいきませんか?

Sub pr_main()
  Call pr1
  Call pr2
End Sub

Sub pr1()
  ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
    PaperSize = xlPaperB4
    BlackAndWhite = False
    Zoom = 75
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="プリン  ターB on Ne01:", Collate:=True
End Sub

Sub pr2()
  Application.ActivePrinter = "プリンターA on Ne04:"
End Sub

【37561】Re:プリンターの選択
発言    - 06/5/11(木) 21:32 -

引用なし
パスワード
   ▼春まき さん:

今晩は。
小生はこのような感じで2台のプリンターを使い分けています。

Sub Bプリンターで印刷()

Application.ActivePrinter="EPSON PM-890C on LPT1:"

ActiveWindow.SlelectedSheets.PrintOut Copies:=1,_
ActivePrinter:="EPSON PM-890C on LPT1:",Collate:True

End Sub

プリンターの正式名は、マクロの記録で出ます。ここではエプソンにしていますが
このマシーンの名前は正式のものを入れてください。必ずマクロの記録の時は、
印刷機を切り替えた状態で記録させたものを使うことです。

そしてこのコードは個人マクロに記載してください。

後は、印刷機を自在に選択できるアイコンを作ります。

「ツール」メニューの「ユーザー設定」の画面を開いたら、印刷の
アイコンを「Ctrl」キーを押してドラッグします。
印刷のアイコンが二つになり、今追加したアイコンにこのマクロの登録をします。
更に、欲をだせば、この新しいアイコンに色をつけると、アイコンの区別が出来ます。
この色付けは、ご存知だと思いますが、新規アイコンを選択して、選択したボタンの
編集で自在に色変えが出来ます。
ユーザー設定の画面は開けたままでこの一連の作業をします。(これがポイント)
説明だけでは分かりにくいかも知れませんが、一度試される価値はあります。

小生は、モノクロのプリンター(連続紙)対応とインキジェットプリンタの
二種類(モノクロとカラーのアイコン)のアイコンをツールバーに出して、印刷を区別してやっています。

【37571】Re:プリンターの選択
発言  春まき  - 06/5/12(金) 11:40 -

引用なし
パスワード
   ちくたくさん、アドバイスありがとうございます。
職場のパソコンで試したところ、残念ながらうまくいきませんでした。
結果は
・Bプリンターが動くはずなのにAプリンターで印刷してしまう。
・ダイアログが出る。細かいメモを無くしてしまいましたが
エラー1004という文とApplicationメソッドエラーという文が書かれていました。
デバックモードにすると
>  Application.ActivePrinter = "プリンターA on Ne04:"
の行が黄色くなります。

しかしpr1の実行がされてないのに何故pr2まで進み印刷までしてしまうのか
不思議です。なにかご指導いただけませんでしょうか。

【37572】Re:プリンターの選択
発言  春まき  - 06/5/12(金) 11:53 -

引用なし
パスワード
   H さんご意見ありがとうございます。

私印刷のアイコンというのがよくわからないのですが、シート上に作った
マクロボタンと使い方は一緒じゃないでしょうか。
印刷のマクロ記録とマクロボタンへのマクロの登録はなんとかできています。

私の困っているのはHさんの場合ですとマクロを使った後
別のシートで通常のプリンター(モノクロ)で印刷しようとしても
PM-890Cの方で印刷してしまうという現象です。

別シートにはプリンターを指定していないマクロボタンがつけてあります。
このボタンの方に通常使うプリンターを指定するようコードを加えてみましたが
やはりエラーが出ます。

ということでPM-890Cのマクロの方に印刷が終わったと
通常使うプリンターの方をアクティブにさせる方法を考えているという次第でした。

Hさんの方法ではそのような現象は起きてないでしょうか。

【37574】Re:プリンターの選択
発言  ハチ  - 06/5/12(金) 12:12 -

引用なし
パスワード
   ▼春まき さん:
>よろしくお願いします。XPパソコンにUSBで2台のプリンターにつないでいます。
>複数のシートの中の一部のシートだけ通常使ってない方のプリンターで印刷できるようにマクロボタンを作っています。マクロ記録を使い以下のコードを使いました。
>
>  ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
>    PaperSize = xlPaperB4
>    BlackAndWhite = False
>    Zoom = 75
>  ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="プリンタB on Ne01:", Collate:=True
>
>しかしこのマクロボタンを使うと以後通常使うプリンターがプリンターAに設定してあるのにプリンターBで印刷されるようになってしまします。
>その為一行コードを加えてみました。
>
>  ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
>    PaperSize = xlPaperB4
>    BlackAndWhite = False
>    Zoom = 75
>  ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="プリン  ターB on Ne01:", Collate:=True
>Application.ActivePrinter = "プリンターA on Ne04:"
>
>すると今度は最初からプリンターAで印刷してしまい、プリンターBに切り替わらなくなりました。
>
>ボタンを押したときだけBで印刷し、印刷後Aの方をアクティブにしてくれる
>ようにするにはどうしたらいいでしょうか。

もしかしたらと思うんですが・・・
プリンタ名は本当にあってますか??
最初のマクロは "プリンタB on Ne01:"
後半のマクロは "プリンターB on Ne01:"
となってますよね?
一瞬なにかメッセージボックスを表示して印刷されてません?

>Application.ActivePrinter = "プリンターA on Ne04:"
の前後に

MsgBox Application.ActivePrinter

を入れてプリンタA→B→Aとしっかり
切り替わっているか
確認してみてはいかがでしょうか?

【37576】Re:プリンターの選択
発言  春まき  - 06/5/12(金) 13:19 -

引用なし
パスワード
   ハチ さん、ご意見ありがとうございます。

>プリンタ名は本当にあってますか??
>最初のマクロは "プリンタB on Ne01:"
>後半のマクロは "プリンターB on Ne01:"
>となってますよね?

すいません、マクロ記録でコード出しているのでプリンタ名はちゃんと出ています。
商品名を出すと差し障りがあるかと思い、書き換えました。
>一瞬なにかメッセージボックスを表示して印刷されてません?
メッセージボックスは出していません。数秒の沈黙の後印刷されています。

>>Application.ActivePrinter = "プリンターA on Ne04:"
>の前後に
>MsgBox Application.ActivePrinter
>を入れてプリンタA→B→Aとしっかり
>切り替わっているか
>確認してみてはいかがでしょうか?

ご助言ありがとうございます。明日職場で試してみます。

【37579】Re:プリンターの選択
発言  Jaka  - 06/5/12(金) 13:54 -

引用なし
パスワード
   参考にならないかもしれませんが....。

http://homepage2.nifty.com/kmado/kvba.htm

E00M082 指定したプリンターで印刷する
(うまくリンクはれそうに無いので、探してください。)

こっちはAPI使っているみたいでした。
http://www.vbalab.net/vbaqa/data/excel/log/tree_796.htm

【37580】Re:プリンターの選択
回答  ハチ  - 06/5/12(金) 14:00 -

引用なし
パスワード
   最初のコードで上手くプリンタBに印刷できるとのことでしたので
こんな感じでどうでしょ。

Dim Buf As String
Buf = Application.ActivePrinter

 ActiveSheet.PageSetup.PrintArea = "$B$1:$Q$38"
    PaperSize = xlPaperB4
    BlackAndWhite = False
    Zoom = 75
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, _
ActivePrinter:="プリンタB on Ne01:", Collate:=True

'MsgBox Application.ActivePrinter

Application.ActivePrinter = Buf

'MsgBox Application.ActivePrinter

【37604】Re:プリンターの選択
発言  HiroHiro  - 06/5/12(金) 19:10 -

引用なし
パスワード
   ▼春まき さん:

>私印刷のアイコンというのがよくわからないのですが、シート上に作った
>マクロボタンと使い方は一緒じゃないでしょうか。

マクロの記録をどのようにされていますか?
個人用マクロに記録されているでしょうか?
一般的にはマクロの保存先は「作業中のブック」を選択しますが、どのような内容の
印刷でも、自在に印刷機を選択できるようにするため、コードを「個人用マクロ」に
書くのです。(個人用マクロ・標準モジュールに)
小生の紹介させていただいたコードで貴殿の正式のプリンター名を書かれると良いのです。
個人用マクロを使われたことがありますか。
>印刷のマクロ記録とマクロボタンへのマクロの登録はなんとかできています。
>
>私の困っているのはHさんの場合ですとマクロを使った後
>別のシートで通常のプリンター(モノクロ)で印刷しようとしても
>PM-890Cの方で印刷してしまうという現象です。

違います、通常はエクセルのメニューの上にプリンタ-の「アイコン」がありますね
このアイコンを通常の印刷のアイコンとして使い、貴方の選定した2台目のプリンターの
「アイコン」を作成し、それに貴方の作成されたマクロ登録させるのです。
その仕方を、紹介したのですが・・・
ですから小生のエクセルのメニューバーの上には「プリンタのアイコン」が2つあり
モノクロアイコンを押せば連続紙の印刷、カラー(色つけした)のアイコンは、カラーの
インクジェットプリンタが自動的に働くのです。

アイコンの作り方も書きましたが→「ツール」→「ユーザ設定」で、この状態でプリンタ
のアイコンを選びCtrlキーを押したまま、ずらして「プリンタのアイコンの複製」を作るんです。
その二つ目のアイコンを右クリックでマクロの登録をする画面が出ますので、それに登録するだけです。

>別シートにはプリンターを指定していないマクロボタンがつけてあります。
>このボタンの方に通常使うプリンターを指定するようコードを加えてみましたが
>やはりエラーが出ます。

シート上に作るフォームのボタンではありません。シート上ですと、そのシートのみの
プリンターの切り替えになりますから、汎用性が低くなりますね。

>
>ということでPM-890Cのマクロの方に印刷が終わったと
>通常使うプリンターの方をアクティブにさせる方法を考えているという次第でした。
>
>Hさんの方法ではそのような現象は起きてないでしょうか。

一寸具体的な内容が分かりませんので、こちらでは検証できませんが・・・

【37624】Re:プリンターの選択
発言  春まき  - 06/5/13(土) 6:25 -

引用なし
パスワード
   HiroHiro さんご意見ありがとうございます
>コードを「個人用マクロ」に書くのです。(個人用マクロ・標準モジュールに)
>小生の紹介させていただいたコードで貴殿の正式のプリンター名を書かれると良いのです。

プリンタ名は商品名は出さない方がいいかなと重い書き換えましたが
実際にはほとんどHiroHiroさんと同じコードです。
標準モジュールに作ってあります。というかまだ標準モジュールしか使えてません。

>一寸具体的な内容が分かりませんので、こちらでは検証できませんが・・・
例えばマクロ使った後でワードを使ったとします。
するとHiroHiroさんの場合モノクロが通常使うプリンターならモノクロ
が動くはずですよね。ところがインクジェットの方が動いてしまうという現象です。

【37625】Re:プリンターの選択
発言  春まき  - 06/5/13(土) 6:43 -

引用なし
パスワード
   Jaka さんご意見ありがとうございます。

>http://homepage2.nifty.com/kmado/kvba.htm
見ましたところ合点いきそうな内容です。NE04とかいう部分が
怪しいと思っていましたがこれを削るとエラーになってましたので
いじれませんでした。早速このコードを試してみます。


>こっちはAPI使っているみたいでした。
>http://www.vbalab.net/vbaqa/data/excel/log/tree_796.htm

こちらは難しすぎてわかりませんでした。理解するだけで
数年かかりそうなのであきらめます。

【37626】Re:プリンターの選択
発言  春まき  - 06/5/13(土) 6:44 -

引用なし
パスワード
   ハチ さんご意見ありがとうございます。

さっそくコード試してみます。

【37627】Re:プリンターの選択
発言  HiroHiro  - 06/5/13(土) 6:54 -

引用なし
パスワード
   ▼春まき さん:
>HiroHiro さんご意見ありがとうございます
>>コードを「個人用マクロ」に書くのです。(個人用マクロ・標準モジュールに)
>>小生の紹介させていただいたコードで貴殿の正式のプリンター名を書かれると良いのです。
>
>プリンタ名は商品名は出さない方がいいかなと重い書き換えましたが
>実際にはほとんどHiroHiroさんと同じコードです。
どのようなコードでしょうか。
>標準モジュールに作ってあります。というかまだ標準モジュールしか使えてません。
VBAProjectの標準モジュールにかかれているのですか?
それをコピーしてVBAProject(PERSONAL.XLS)を選択して→挿入を押して
標準モジュールを開き、その画面に貼り付けてください。そうすると個人マクロになります。

>>一寸具体的な内容が分かりませんので、こちらでは検証できませんが・・・
>例えばマクロ使った後でワードを使ったとします。
>するとHiroHiroさんの場合モノクロが通常使うプリンターならモノクロ
>が動くはずですよね。ところがインクジェットの方が動いてしまうという現象です。
貴方のマクロはワードに転用できない筈ですよ・・・どのような操作をされているのでしょう??だってマクロがワードにもかかれているのでしょうか?
エクセルにもワードにも利用するには「個人用マクロ」を使うことです

それから、マクロ以前の問題のようにも考えられますね。マクロを使わずにプリンターの切り替えが出来ていますか?しかもワンポートで出来ていますか?マニュアルで切り替えが出来ていますか。

そのワークブックに固有のプリンターの選択のマクロも意味がないことになりますね。
ですから個人マクロにしないと・・・
時間が許せるようであれば、日経PCの2006年1月号にプリンターの使い分けマクロが詳細に載っています。これは非常に参考になりますから、バックナンバーで取り寄せる事も一案かも知れません。

【37642】Re:プリンターの選択
発言  春まき  - 06/5/13(土) 19:14 -

引用なし
パスワード
   HiroHiro さん、ご意見ありがとうございます。

>VBAProjectの標準モジュールにかかれているのですか?
>それをコピーしてVBAProject(PERSONAL.XLS)を選択して→挿入を押して
>標準モジュールを開き、その画面に貼り付けてください。そうすると個人マクロになります。

すいません、私の勉強不足なのかVBAProjectにはFUNKRES.XlSとファイル名.xls
しか出てきません。

>貴方のマクロはワードに転用できない筈ですよ・・・どのような操作をされているのでしょう??だってマクロがワードにもかかれているのでしょうか?
>エクセルにもワードにも利用するには「個人用マクロ」を使うことです。

話が混乱しているでしょうか?ワードの印刷ボタンを使うという意味で言ってたのですが。
1)プリンター名を指定したマクロを使う。
2)その後普通の印刷を行うとコントロールパネルで通常使うプリンターに設定した
プリンターで印刷されると思っていたが1)で使ったプリンターが動いてしまう。
つまりはワードでなくてもメモ帳やお絵かきソフトでも2)のような現象が起きるのですが。


>それから、マクロ以前の問題のようにも考えられますね。マクロを使わずにプリンターの切り替えが出来ていますか?しかもワンポートで出来ていますか?マニュアルで切り替えが出来ていますか。

最初にマクロ記録するには手動で切り替えできないと記録に残らないので
当然できています。1ポートではないと思います。
on NE04とNE02というのがポート名らしいので。

>ですから個人マクロにしないと・・・
>時間が許せるようであれば、日経PCの2006年1月号にプリンターの使い分けマクロが詳細に載っています。これは非常に参考になりますから、バックナンバーで取り寄せる事も一案かも知れません。

参考にさせていただきます。

【37650】解決しました
お礼  春まき  - 06/5/14(日) 10:09 -

引用なし
パスワード
   Jaka さんに紹介していただいた下記サイトのコードで解決しました。
>http://homepage2.nifty.com/kmado/kvba.htm

ポート番号を指定しないと何故うまくいくのかわかりませんが。
これでとりあえず現場の混乱は避けられそうです。
ありがとうございました。

【37651】試してみました。
お礼  春まき  - 06/5/14(日) 10:18 -

引用なし
パスワード
   ハチ さん、問題はjakaさんの紹介サイト参照で解決できました。
ハチさんの紹介していただいたポート確認マクロ試してみましたが
残念ながらメッセージボックスが出てきませんでした。
何もメッセージが出ず印刷は終わってしまいました。

成果のない報告で申し訳ありません。

7667 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free