[[20040426142448]] 『プリンタの指定』(aki) ページの最後に飛ぶ

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

 

『プリンタの指定』(aki)

 ボタン1つで印刷できる様にマクロを自動記録させました。
 
 Application.ActivePrinter = "DocuCentre Color 400 on Ne06:"

 上記のステートメントになるのですが、on ポート名の部分が、ネットワーク上の
 プリンタを使用するせいか、私のPCでは on Ne06 で印刷指示するのですが、
 他のPCでは エラーを起こしてしまいます。 無理かもしれませんが、
 どのPCからもこのプリンタに印刷指示できる方法があるのでしょうか?

 宜しくお願いします。

 Excel2000 Windows Windows2000


 > 他のPCでは エラーを起こしてしまいます...
 その[他のPC]には、Docucentreのドライバーはインストールされていますか?

(kazu)


 インストールされています。。。
 自分のPCでも前に自動記録させた時には on Ne05:でした。
 少し間が空くと on Ne○○で動かなくなり、その都度
 自動記録させてきました。(○○の数字がその度に変わります。)
 ですので、その部分を固定というか汎用性のある指示にしたいのですが。。

 プリンタのプロパティのポート名(FX-○○○○EC)とも入れてみたのですが、
 ダメでした。

 (aki)


 多分プリンターとプリンタードライバのミスマッチだと思いますが、

 > 他のPCでは エラーを起こしてしまいます...
 どういうエラーが起きますか?

(kazu)


 「実行時エラー’1004’:

  ’ActivePeinter'メソッドは失敗しました:'_Application'オブジェクト」

  のメッセージが出て、印刷ができません。

  プリンターはコピー機で印刷もできるものです。社内ネットワーク上に
  直接接続されているらしいのですが。。。(←いまいち良くわかっておりません。。)

  (aki)


各自使用するプリンタを「プリンタの設定」でDocuCentre Color 400を常時使用するに設定ではだめですか?

それなら、Application.ActivePrinter = "DocuCentre Color 400 on Ne06:" はいらなくて .printout でいいのでは・・・
あまり詳しくはないのですが、常にactiveになっていれば、プリンターの指定は必要ないと思いますが・・・(hisa)


みんな席の近くのプリンタを常時使用に設定してあるので難しいと思います。
このEXCELシートに関してはどうしも両面印刷をしたい為、コピー機のプリンター
機能を使いたいのですが、やっぱり難しいですかね。。。(aki)
 

 素直にプリンタ選択させてはいかがでしょう。
 
Sub プリンタ選択()
Dim tmp As Variant
tmp = Application.Dialogs(xlDialogPrinterSetup).Show
If tmp = False Then Exit Sub
End Sub
(KAMIYA)


 と、提案した直後でナンですが、
使用可能なプリンタ名称とその数を得るには?
http://keep-on.com/excelyou/2000lng4/200004/00040137.txt
こちらも参考になるのではないでしょうか。
(KAMIYA)


KAMIYAさん、ありがとうございます。
 素直にプリンタ選択することに致しました。
 (性格も素直なので。。。)次に提案していただいたコードは
 長すぎて、理解するのに時間がかかりそうで。時間のある時に
 ゆっくり勉強します。

 プリンタの選択でほぼ上手くいったのですが、選択してから
 そのダイアログボックス上の設定ボタンを押すと通常使用の
 プリンタの設定しかできません。一旦OKボタンで抜けてから、
 もう一度プリンタ選択のダイアログボックスを出すと印刷に使用したい
 プリンタの設定に入れます。
 1度ダイアログボックスを出現させてから設定もしてOKにしたいのですが、
 If文を応用すればいいのでしょうか??

 (aki)


 だーっ、「プリンタプロパティ」の設定ですか?
以前調べたことはありますが、「プリンタプロパティの設定」の
ダイアログを表示するだけでもAPI関数だの、VBScript(だったかな?)
の参照設定だの、ユーザー定義のオブジェクト変数だのと、簡単そうな割には
オオゴトで、とても独学、片手間の私には手におえません。
VBAではなくて、VBプログラミングの知識がないと・・・・。
わたしにはいまのところ「なんやの、それ」の世界。
うーん、詳しい人、レスくれませんかね?
(KAMIYA)


 あまり使いたくない手動方式ですが、on error を使ってこんな方法もありかと。

 Function prt_1(prt_cmd)
     prt_1 = False
 On Error GoTo er01
     MsgBox prt_cmd
     Application.ActivePrinter = prt_cmd
     prt_1 = True
     Exit Function
 er01:
     MsgBox "Error : " & prt_cmd
     Exit Function
 End Function 

 Sub prt_test()
     ret = prt_1("DocuCentre Color 400 on Ne06:")
     If ret = False Then
         ret = prt_1("\\2000SERV-46Z2BO\Canon BJ S600 on Ne01:")
         If ret = False Then
             MsgBox "プリント処理に失敗しましたakiさんHELP"
         End If
     End If
 End Sub

 (kazu)


 KAMIYAさん、kazuさんありがとうございます。
 あまり使いたくないという手動方式とやらに素人の私が
 手を出すのも怖いので、最初KAMIYAさんに教えてもらったコードに
 
 Dim tmp As Variant
 Dim Bmp As Variant

  tmp = Application.Dialogs(xlDialogPrinterSetup).Show
  If tmp = False Then Exit Sub

   Bmp = Application.Dialogs(xlDialogPrint).Show
    If Bmp = False Then Exit Sub

  と命令文を追加して、プリンタを選択したら、
 すぐ印刷ダイアログボックスを出す様にしました。
 これで各自で印刷内容の設定をしてもらう事にします。。。

 でもkazuさん提案のコードも興味があるので、早速試してみます。

 (aki)


コメント返信:

[ 一覧(最新更新順) ]


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