VBからの印刷でページが順番に印刷されない場合の解決方法

このQ&Aのポイント
  • VBからPrinterオブジェクトを使用して複数ページを印刷している際に、印刷順が予期しない結果になることがあります。印刷命令の順番に紙が排出されるようにするためには、プリンタのプロパティのスプール周りの設定を確認する必要があります。
  • プリンタのスプール設定によって影響を受けることがあります。スプール設定は、印刷ジョブをキューに保持する方法を指定します。デフォルトでは、最初に送信された印刷ジョブが最初に印刷されます。しかし、プリンタの設定によっては、最初に送信されたジョブが一時的に保留され、後のジョブが優先的に印刷されることがあります。
  • この問題を解決するには、プリンタのスプール設定を確認して、印刷ジョブを即座に印刷する設定に変更する必要があります。また、Printer.EndDocメソッドを使用して印刷ジョブの終了を明示的に指定することも重要です。これにより、順番に印刷されることが保証されます。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

NewPage は印刷を開始しないはずですね。 おっしゃるような条件では #1 の方法はだめですね。 私だったら WINAPI を使用して、プリンタの状態を見ながら順番に印刷する方法 を試してみます。 あるいは数ページずつまとめて印刷かな。 それでもだめなら C で DLL を作って VB から呼び出すかな。

参考URL:
http://www.winapi-database.com/Graphics/Printer/GetJob.html
yuyan1962
質問者

お礼

いろいろと教えていただきありがとうございました。

その他の回答 (1)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

Printer.print "1ページ目" Printer.NewPage Printer.print "2ページ目" Printer.NewPage Printer.print "3ページ目" Printer.NewPage Printer.EndDoc では?

yuyan1962
質問者

補足

ご回答ありがとうございます。あまり詳しくないのですが、.NewPageメソッドを発行したタイミングでそのページ印刷がプリンタにわたされるのでしょうか? 今回問題になっているプログラムは場合によっては数百ページの印刷を行う場合もあるのでなるべく早くページをプリンタに渡したいと思いページ毎にEndDocを発行しているのですが...もしNewPageでは実際に印刷が開始されないのであれば教えていただいた方法は残念ながらとれません。

関連するQ&A

  • VBでの印刷について

    VBでPRINTER.ENDDOCを実行すると印刷後、自動的に用紙が排出されますが、1行印刷しても用紙を排出せず次の1行を印字し排出は任意に出来る方法をご存じの方よろしくお願いします (1行ずつ送られてくるデータをその都度印字し 用紙が一杯になると改ページしたい)ENDDOCしないとスプールされるだけで実際には印字されません、実際に印字し改ページしない方法があれば お願いします

  • VBでの印刷について

    VBでPRINTER.ENDDOCを実行すると印刷後、自動的に用紙が排出されますが、1行印刷しても用紙を排出せず次の1行を印字し排出は任意に出来る方法をご存じの方よろしくお願いします (1行ずつ送られてくるデータをその都度印字し 用紙が一杯になると改ページしたい)

    • 締切済み
    • PHP
  • 印刷の順番

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

  • VB6の印刷でメモリリーク

    VB6の印刷でメモリリーク VB6.0(SP6)について質問です。 PRINTERオブジェクトを使用して連続で印刷するとメモリリークが発生します。 プログラムは単純にPrint文で印刷しているのみですが、Printerオブジェクトに 問題があるのでしょうか? もしかしたら使用可能メモリ限界まで増加し続けるというWindowsの仕様でしょうか? お知恵をお貸しください。よろしくお願いします。 以下のソースを2秒周期のタイマで実行しています。 For iLoop = 0 To 100 Printer.CurrentX = iLoop Printer.CurrentY = iLoop Printer.Print "TEST" Next iLoop ’ テスト用にKILLDOCをしています Printer.KillDoc

  • VBでファイルを指定して印刷

    はじめまして、いまVBを使ってTextBoxに、ファイルを指定して そのファイルの内容の一覧印刷ができるようなプログラムを組んでいます。 一部分だけですが、自分なりに考えて作ったものが、 FileNumber = FreeFile Open frm01.CommonDialog1.FileName For Input As #FileNumber Printer.Print StrConv(InputB(LOF(FileNumber), FileNumber), vbUnicode) Close #FileNumber Printer.EndDoc のような感じで、もし他に方法があれば教えて欲しいのですが。 まだ、VBをはじめて1ヶ月程度の初心者なので、どうか詳しい方、 回答のほうをお願い致します。

  • VBの印刷について

    visual basic6の印刷について質問です。 現在ピクチャーボックス内にテキストボックスやオプションボタンなどの コントロールを配置しています。 それを印刷したいのですがうまくいきません。 各コントロールが認識されずに真っ白な状態で印刷されます。 以下のソースで各コントロールが認識されていないことがわかりました。 Private Sub print_cmd_Click() print_mt = MsgBox("印刷しますか?", vbYesNo,) If print_mt = vbYes Then Picture2.Picture = Picture2.Image SavePicture Picture2.Picture, App.Path & "\abc.bmp" End If End Sub bmpで表示しようとしても何も確認できません。。。 Printer.PaintPicture Picture1.Image Printer.EndDoc でやっても白紙ででてきます。 AutoRedrowはTrueにしてます。 なぜピクチャーボックス内のコントロールが認識されないのでしょうか? 各コントロールは正常に動作しています。

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

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

  • VB5で、PDFファイルを印刷ダイアログボックスを非表示にして任意の場

    VB5で、PDFファイルを印刷ダイアログボックスを非表示にして任意の場所に保存したいのです。 現状は、VB5で下記のように記述しています。 通常のプリンタ設定はCutePDFとなってます。 Printer.Print ○○ Printer.EndDoc 上記で名前をつけて保存ダイアログボックスが表示され、 デスクトップ上が保存先、名前はVisualBasic.pdfとなってます。 これを、 保存ダイアログボックスを非表示にし、 保存先、ファイル名をVB側で指定したいのですが、 どのようにやればいいのかわからず困っています。 その前にできるのか… VB5は客先での環境なので変更できません。 どうぞお力をお貸しください。。 よろしくお願いいたします。

  • バーコード印刷

    バーコードと一緒に文字も印刷したいのですけど 日本語が文字化けを起こしてしまいます。 Private Sub Command1_Click() Printer.PaperSize = vbPRPSA4 Printer.FontSize = 16 Printer.Font = "CODE39" Printer.Print "*KATOM*" Printer.Font = "MS Pゴシック" Printer.Print "あああ" Printer.Print "AAA" Printer.EndDoc End Sub CODE39というのがバーコードのフォントです。 "あああ"が文字化けするのですがどなたかわかりますか?

  • VB6で印刷の幅を調べたい

    VB6(SP5)でプログラミングをしております。 印刷で、Printer.Print("ABC")と、実行したとします。 フォントサイズにより、横幅が異なります。 このインチ幅(twip)を先に確認するにはどうすれば 良いのでしょうか? 宜しくお願い致します。

専門家に質問してみよう