• 締切済み

印刷要求順番と印刷出力順番が違う。

お世話になります。 現在、複数のファイルを指定し、一括で印刷をする処理をVBで作成しています。 ●問題 印刷される順番には意味があり、要求順に出力してほしいのですが、VB側でかけている印刷要求の順番と、プリンタのジョブにたまる順番が違う。 ループ内で1ファイル単位で印刷要求をかけているので、VB側は問題ないと思うのですが、原因がわかりません。 (ちなみにブレイクポイントをおき、1枚1枚印刷されるのを確認しながら行うと正常に印刷されます。) また、Sleep関数を使用し10秒待ちを入れても出力順が変わってきます。 問題解決のきっかけになれば幸いです。 宜しくお願い致します。 ---- 環境 ---- Windows2000 VB6.0 プリンタ xerox - DocuCentre607CP

みんなの回答

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.4

多分スプーラーで 印刷量が多いと後回しにされます プリンターのプロパティの 詳細設定のタブで スプールされたドキュメントを最初に印刷するが チェックされていますか?

akahuku7
質問者

補足

チェックされています。 推測ですが、VBから印刷要求を出してからプリンタのジョブに並ぶ前に順番が入れ替わってしまっていると思います。 プリンタのジョブに並んでいる時点で順番がおかしいので。 やはり、印刷出力されたのを確認してから、次の印刷要求をかけなければならないのでしょうか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

ShellExecute()ではだめですね。 印刷するものがどんなもんだかわかりませんが、出力させるアプリの作りによって順番が狂っても不思議ではありません。 なので、確実に印刷が終わってから次のファイルを印刷するようにする必要があります。 ShellExecuteEx()で印刷アプリを起動し、取得したプロセスハンドルを使用してWaitForSingleObject()で起動した印刷アプリが終了するまで次の印刷を行わないようにするのがいいかと。

akahuku7
質問者

お礼

ご意見ありがとうございます。 その方法も考えました。(まだ試してないですけど。) 今XEROXの方に何が問題なのか聞いている段階です。 今回の場合、印刷速度を重視しているので、XEROXの解答で対応出来ないようであればそちらを試したいと思います。

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

それはヘンですね。 私はそのような現象に陥ったことはありません。 帳票ツールは何を使用しているのでしょうか? あるいは、VBのPrinterオブジェクトにより出力しているのでしょうか? また、後者の場合、EndDocメソッドの発行は適切な順番で行われてますか? それでもダメな場合は、出力した後にDoEvents関数を挿入してみてはいかがでしょうか? 「確認しながら行うと」というのが「メッセージボックスを出力しOKボタンを押すと」ということでしたら、Windowsに制御が渡ってないことが原因かもしれませんので試してみてください。

akahuku7
質問者

補足

'実行する操作を指定 srtOperation = "print" 'ファイル名を指定 strFileName = ファイルパス 'デフォルトディレクトリを指定 strDefaultDirectory = "" lngExecutableHInstance = _ ShellExecute(Me.hwnd, _ srtOperation, _ strFileName, _ vbNullString, _ strDefaultDirectory, _ SW_SHOWNORMAL) 上記の処理で印刷要求をかけています。 DoEvents関数ではダメでした。

回答No.1

こんにちは。 プリンターをポーリングして、印刷終了後に次のJOBを出すのはダメですか? JOBをスプールする必要がなければ・・・ですが。 (^^ゞ

関連するQ&A

  • プリンターに出力できない

    DocuCentre-IV C4470を使っていますが、本日ドキュメントを出力できなくなりました。 状況としては、PC立ち上げ後資料をプリントアウトしようとしましたが出力されませんでした。 昨日までは正常に印刷できていました。 当然ながら、設定等の変更は行っていません。 プリンターのプロパティを確認したところ、「使用不可」となっています。 プリンタードライブの再インストールやプリンタの削除→再設定を実施。 最初にプリンタの削除→再登録時にはテストプリントは正常に出力されましたが、出力したい資料をプリントアウトしようとしたら、やはり出力されず、プリンタのプロパティは「使用不可」の表示となっていました。 LANは繋がっています。(ネットワーク上では他のPCを認識しています。) OSはWindows10(pro.)64bit PCは富士通のESPRIMO プリンタはXEROXの DocuCentre-IV C4470

  • エクスプローラから連続印刷を行なうと、表示順通り印刷されない

    エクスプローラに表示されているPDFファイルを複数個選択し[右クリック]→[印刷]すると表示順(ファイル名順)通りには出力されず、また出力されないファイルもあります。 10ファイルを印刷実行すると、必ず2,3ファイルは出力されません。 希望の順番で印刷するにはどうすれば良いでしょうか? 宜しくお願いします。 使用しているプリンタはネットワークプリンタ、端末のOSはWindows2000です。

  • 印刷ボタンを押すとプリンターが一時休止中になる

    とても困っています。 PCは、MACのOS Sonoma 14.4.1を使っています。 プリンターは、FUJI XEROXのDocuCentre-VI C2271-AirPrintです。 日曜日から急に、印刷ボタンを押すとプリンターが一時休止中になり、印刷ができなくなってしまいました。家族のWINDOWSからは印刷できましたので、マック側の問題かと思います。PCの再起動、プリンターの削除と再登録をしてみましたが、状況変わらずです。 対処方法のアドバイスがありましたらお教えください。 何卒よろしくお願いいたします。

  • VBからの印刷でページが順番に印刷されません。

    VBからPrinterオブジェクトを使用して複数ページを印刷しています。 Printer.print "1ページ目" Printer.EndDoc Printer.print "2ページ目" Printer.EndDoc Printer.print "3ページ目" Printer.EndDoc のように命令を実行すると、1,2,3の順に印刷されず、1,3,2の順に印刷されます。(いつもではありません) おそらくプリンタのプロパティのスプール周りの設定によってこのようになるのかなと思っているのですが、確実に印刷命令を発行した順番に紙が排出されるようにするにはどのようにしたらよいでしょうか?

  • Excelから印刷が出力されません!

    Excelで作ったものを印刷出力しようと印刷プレビューで確認後→印刷、としても、出力されません。 PCからプリンターのジョブを確認すると、スプール→印刷中→削除と、勝手に削除されてしまいます。 印刷プレビューではちゃんと見えているのに・・・大変困っています(涙

  • プリンタに200~1000くらい印刷ジョブを送ると印刷順が狂う

    仕事上A4サイズの1枚書類を月末に一度に200~1000枚程印刷しています。この印刷は枚数分印刷ジョブがプリンタに渡され印刷される事になります。印刷順番がとても大切なのに、大量の印刷ジョブが送られると印刷順番が狂ってしまう場合があるのです。どの位の印刷ジョブで印刷順番が狂うのかも時と場合によってで状況発生する場合としない場合があり振りまわされ状態です。プリンタエラーになる訳でもないので数百枚の印刷物の印刷頁を毎回確認しなければならない状況です。どなたか印刷物の順番が混乱しないようなソフトコントロールとかあったら教えて下さい。印刷ジョブをプリンタに流す側のプログラムを作成しているのでソフト面での対処か、ハード設定面での対処があれば助かります。

  • 印刷と仮想メモリ容量の関係について教えてください。

    tif や pdf ファイルを大量に印刷する場合、プリンター側のバッファの大きさ及び印刷出力の遅さで、どうしてもクライアント側のPCに印刷待ちのジョブが増えてきます。(プリンターサーバを利用しないで、プリンターとPCを直接TCP/IP で接続して印刷する場合です。)この場合、印刷待ち状態のジョブは仮想メモリーに保管される形でWindowsシステムは印刷ジョブを持ち続けていると思います。 印刷出力の速度を超えて、印刷ジョブをどんどん新規追加していくと、仮想メモリを最大値まで使用してしまうと思います。この場合、Windows は「印刷に失敗しました」とメッセージを表示しているのではないかと思いますが、この状態で何もしないと、「失敗した」印刷ジョブはどうなるのでしょうか? 失敗直前までのデータを保管したまま印刷ジョブの順番が着たら、その失敗したままのデータでプリンターへ出力するのでしょうか? 現象としては、プリンター側で、突然「インターフェイスエラー」メッセージを表示しました。ONLINEボタンを押すことで、エラーが消えて、要求した印刷はすべて正常に終わりました。 しかし、クライアントPCから、プリンターリモートUIを見に行くと、 一部の機能が表示しなくなっていました。(印刷結果の履歴) プリンターの電源を再投入すると、間違いなく復旧することは今までの経験でわかっています。 プリンターは、キャノン LBP-1910 です。 プリンターの搭載メモリーは、144(16+128)MB です。 ドライバーは、LIPS-4 11.02 です。 OS は、Windows-XP WSUS で毎月アップデートしています。 クライアントPCは、主メモリ(512MB) Cパーティション(20GB)で約8GB が空き容量です。 仮想メモリーの設定は、初期状態のままなので、初期値(750MB)最大値(1.5GB)です。 プリンターとクライアントは、100MB の社内LANで接続されています。 クライアントは、約20人です。 社内LANは親会社の社内LANの下に位置し、インターネットのも自由につながる状態です。 このほかの情報が必要であれば指摘してください。 単純にプリンタードライバーのヴァージョンを上げるか? 仮想メモリーの最大値をさらに大きくすれば、すむ問題なのでしょうか?  よろしくお願いします。

  • 印刷の順番

    初めて投稿します。 初心者なのでうまく伝わるか不安ですが、よろしくお願いします。 以前はNTサーバに直にドットインパクトプリンタを接続し、アプリケーションから300ドキュメントぐらい連続して印刷依頼をしていました。(1ドキュメントは必ず1ページ) 印刷の順番は当然、依頼の順番と同じでした。 ところが、社内のレイアウト変更により、Win98マシンをプリントサーバにして印刷をしたところ、印刷の順番が依頼順と異なるようになってしまいました。 1~10番目ぐらい印刷すると急に200番目ぐらいに飛び、そこから順番通りに印刷していると思うと、今度は50番目ぐらいに戻り順番通りに印刷…という具合です。若干の誤差はありますが、もう一度印刷しなおしても、同じように順番は狂います。 これだけではなく、300ドキュメントのうち、印刷されるのは200ドキュメントだけで残りは”スプール中”となったままです。 いったい何が起こっているのでしょうか? ちなみにNTサーバとプリントサーバは違うセグメントにいます。

  • プリンタで出力する順番を制御したい

    OSはWindows2000pro、 プリンタはCanonPIXUSiP3100です 長文のコンテンツを印刷すると何十枚も出力されますが、ページの先頭から順繰りに出力されるため、一度全て出力が終わったあとに、いちいち並べ替えなければなりません。例えば1ページから30ページまであるコンテンツを印刷すると1,2,3,4...30と出力されますが、そのままでは一番上が30になってしまって読めません。これを30,29,28,...1という順番で出力させる方法はないでしょうか? 業務用の高価なプリンタには「ソート機能」というものがあると聞きました。これに相当する機能は家庭用プリンタには存在しないのでしょうか? よろしくお願いします。

  • 出力ファイルの印刷

    こんにちは。アプリケーションから様々なデータを出力するときに、ファイルへ出力を選択して出力すると出力ファイルが作成されますが、この印刷方法を教えて下さい。会社で使っているプロッタで、専用のサーバが付けられている分は印刷のしかたが分かっているのですが、それ以外の普通のプリンタでも同じような印刷をしたく考えています。何かパソコンに設定することで可能でしょうか?それともプリンタサーバのようなハードを買い足さなくてはいけないでしょうか?お願いします。

専門家に質問してみよう