下記のようにプリンターにデータを送って出力しています。
ところがこのループを繰り返すうちにPCが不安定になり、
最終的にはシステムが落ちてしまいます。
「メモリが不足しています」のエラーも出たり出なかったりなので
何かが開放されていないようなのですが分かりません。
どなたかご教授ください。よろしくお願いいたします。
--------------------------------------------------------
Do
Set tmpFont = New StdFont
tmpFont.Size = 9 (可変)
tmpFont.Name = "MS 明朝" (可変)
Set Printer.Font = tmpFont
※ここで Printer.TextHeight("")等のデータを取得
tmpFont.Name = 9 (可変)
tmpFont.Size = "MS ゴシック"(可変)
Printer.CurrentX = 100 (可変)
Printer.CurrentY = 100 (可変)
Printer.Print "Test" (可変)
Set tmpFont = Nothing
Loop
--------------------------------------------------------
補足です。
上記ループを数十回まわした後、Printer.EndDocで出力します。
その一連の流れを続けていると落ちます。
どうかよろしくお願い致します。
Set tmpFont = New StdFont
tmpFont.Size = 9 (可変)
tmpFont.Name = "MS 明朝" (可変)
Set Printer.Font = tmpFont
↑
これをやめて
Printer.Font.Size = 9 (可変)
Printer.Font.Name = "MS 明朝" (可変)
としてみたらどうでしょう。
めだか様
レスありがとうございます。
早速StdFontを使わず、直接Printer.Fontを設定するようにしました。
結果的に出力可能なページ数は伸びましたが、やはり落ちてしまいます。
と言うのも、書いてはいませんでしたが基本フォント情報をとっておく
別のStdFontを使っていたのでそちらの問題かもしれません。
と、考えるとStdFontの使用数に比例して早く落ちるということでしょうか…。
なんとか、StdFontを使用して落ちない方法を調べないといけないですね。
その辺の事情をご存知の方、よろしくお願いいたします。
追伸2
他の症状としては、MsgBoxの大きさが大きくなったりしてしまいます。
スプールって知ってる?
http://e-words.jp/w/E382B9E38397E383BCE383AB.html
プリンタのこと考えないで待たずにループ回せるだけまわせば、
そりゃ、いつかは破綻して当然でしょう。メモリは物理的に
有限なんですから。
特攻隊長まるるう様
レスありがとうございます。
実際プリンタに送る(印刷する)データ量はそれほどではありませんので
それでメモリがいっぱいになっている訳ではないと思います。
提示されたコード以外の場所でトラブっているなら、
トラブルが再現出来る最小限のコードを提示してもらわないと、
想像だけが膨らんでしまう。(^^;
貴方がプリンタを使った処理に精通していて、確実な根拠が
あるのであれば、
>それでメモリがいっぱいになっている訳ではないと思います。
ではなく、実際に他人がそう納得できるテストを実行して、
その具体的な結果を報告してください。
我龍院忠太様
特攻隊長まるるう様
レスありがとうございます。
>想像だけが膨らんでしまう。(^^;
すみません。今、落ちる最小限のサンプルを作ろうとしていますが、
それもなかなかうまくいかない状態です。
(それが出来たときは、根本的に解決かもしれませんが…)
>その具体的な結果を報告してください。
あまり精通はしていませんので説明不足はお許しください。
実際プリンタに500MB以上の出力データを送って印刷することは可能ですが、
今回のシステムが落ちるときは300MB送った時点で落ちています。
これが説明になりますでしょうか…
Set tmpFont = New StdFont
をループの外に出すことで解決しました。
失礼しました。
ツイート | ![]() |