- ベストアンサー
マクロで印刷中にプリンタのメッセージが出ると止まる?対処方法を教えてください
- マクロで印刷の途中でプリンタのメッセージが出ると実行が止まってしまいます。特に、プリンタのインク切れなどのメッセージが出ると、そのまま停止し、ファイルを閉じることもできません。対処方法を教えてください。
- Excel2007で、マクロを使用して印刷を行っていますが、プリンタのメッセージが表示されると、実行が止まってしまいます。プリンタのインクがなくなった場合などに問題が発生し、ファイルを閉じることもできなくなります。この問題の解決策を教えてください。
- Excelのマクロを使用して印刷を行っている際に、プリンタのメッセージが出ると、マクロが停止してしまいます。具体的には、インク切れなどのメッセージが表示されると、プリンタの処理が止まり、ファイルを閉じることもできません。この問題に対する解決策を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2の回答者です。 >またなにかありましたらよろしくお願いします このまま締めないままで、質問をオープンのままというのは、現在の情報では満足されないということでしょうか。それは手厳しいです。 本来、#1さんの回答の中で指摘しているスプールで、マクロ側のエラーは回避されるはずです。 ただ、プリンタの種類など分かりませんから、以下で調べてみてください。スプールがない状態なら、空白が出てくると思います。 Private Sub ActivePrinterConfiguration() Dim oPn As Variant Dim strComputer As String Dim objWMIService As Object Dim colInPrn As Object Dim pn As Variant Dim aPn As String strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colInPrn = objWMIService.ExecQuery _ ("Select * from Win32_PrinterDriver") For Each oPn In colInPrn aPn = ActivePrinter aPn = Left(aPn, InStr(1, aPn, Space(1), 1) - 1) pn = Mid(oPn.Name, 1, InStr(oPn.Name, ",") - 1) If pn Like aPn & "*" Then msg = msg & vbCrLf & "Data File: " & oPn.DataFile msg = msg & vbCrLf & "Monitor Name: " & oPn.MonitorName msg = msg & vbCrLf & "Name: " & oPn.Name msg = msg & vbCrLf End If Next MsgBox msg End Sub プリンタの種類にもよりますが、最近のインクジェットでしたら、通常は、プリンタスプールがあるはずです。それが装備されていれば、よほど大きなデータ量でもなければ、そこにストックしますから、マクロ側ではエラーは発生しません。 概ねは、再開した後では、一部分が失敗していますが、印刷は続行できるかと思います。 プリンタ自体のエラーは、On Error Goto ErrHandler で、トラップしてもよいとは思いますが、そういう種類のエラーだとは思いません。 以下は、プリンタの種類にもよりますから、万能ではありませんが、以下のような方法もあります。 http://okwave.jp/qa/q120709.html お勧めしませんが。 >逆にすべてのフィルタ条件を一度で戻せるマクロを作っておく方がストレス無く解決する それは、簡単だと思います。 Sub Test1() 'オートフィルタ条件解除 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If 'オートフィルタ解除 If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilter.Range.AutoFilter End If End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
>プリンタのメッセージが出るとメッセージを閉じても続きのマクロが実行されず止まってしまいます >対処する方法がわかりません あまり、そういう例は起こらないはずですが、マクロが止まった場合は、プリンターの電源を切ればよかったはずです。マクロで、割込を入れるという方法がないとは言えませんが、常に、プリンタとの通信をインターラクティブですると、とても、マクロが遅くなると思います。 他に、常に、ループで一枚ずつPrintOut して、途中で割込が入れられるように、DoEvents を入れる方法というのもありますが、通常は、そのようなことはしませんね。
お礼
回答ありがとうございます プリンタの電源を切るのは思いつかなかったので今度試してみます 今回質問のファイルの印刷マクロは 一度の実行で条件を変えて何度も印刷用データを取り出しますが 中には印刷不要の内容の時もあるので 都度プレビュー画面を表示し 印刷するなら印刷ボタン 不要なら閉じるボタンでビューを閉じると 続いてループ処理が実行されるようにしています ユーザーが目で見て判断できるので使いやすく 何度もやり直しもできてなかなかうまく作れたと思っていますが インクジェットプリンタの為か インクが無くなった、用紙が無くなった だけでなく インクが少なくなっただけでもいちいちメッセージが出てきて 止まってしまうと無理矢理終了したあとのファイルは データのシートがいくつもフィルタ掛かったままになっているので それを戻してシート保護をかけて・・・となかなか面倒なので・・・ 逆にすべてのフィルタ条件を一度で戻せるマクロを 作っておく方がストレス無く解決するかもと思うようになりました またなにかありましたらよろしくお願いします ありがとうございました
- keithin
- ベストアンサー率66% (5278/7941)
もしかするとインクを取り替えてプリンタがノーマルな稼働状態に復帰すれば,プリンタから応答が返ってようやく動き出すかもしれませんね。ExcelVBA内での出来事では無いので,プログラム側で簡易な対処が可能なトラブルでは無いと思います。 印刷関連は,他にも「印刷プレビュー画面でトラブると一切制御を受け付けなくなる」など,マクロにとっては鬼門です。 もしかすると。 Excelを終了した状態で,ウィンドウズのスタートメニューのプリンタとファックスから当該のプリンタを右クリックしてプロパティを出します。詳細設定のタブでプリンタスプールもしくはプリンタに直接印刷データを送るなどの設定を,今の設定から違うのに変えてみると,ご相談のトラブル時にもロックアウトされてしまうのを逃れられるかも?しれません。 ただし通常の印刷にも直接影響する設定なので,今回ご相談のトラブルの発生頻度(結局その一回を諦めれば,終わりといえば終わりのトラブル)と,毎日の運用にどの程度の影響が現れるか天秤にかけて対応を検討してみてください。
お礼
回答ありがとうございます 以前にもネットワークプリンタの切り替えがマクロでは出来ず困った経験もあり 印刷関連は苦労していますがやっぱり仕方ありませんか・・・ (ちなみにプリンタの切替えは ”××のプリンタを選択してください”とのメッセージを出してから プリンタ選択のダイアログを出してユーザーに選択させる事で対処しました) プリンタの設定を変える事が他の作業にどの程度影響するのかわかりませんが ダメもとで一度試してみようと思います ありがとうございました
お礼
何度も回答をありがとうございます 時間がとれなくてチェックが遅くなり申し訳ありません 実は今回質問の印刷は月に数回特定の日に実行されるので まだプリンタ設定の変更も 電源offも試せていません 結果が出てから 報告も兼ねて解決済みにと考えていたため まだ締めておりませんでした とりあえずのフィルタ条件解除のマクロは自身でも作ってみましたが なにぶん記録したマクロをベースにして編集でしか作れない程度の 未熟者なもので1コ1コ戻していました(-_-;) たった2行で戻せるのですね!勉強になりました 通常は起こらない例との事ですし 検索しても似たような事例が見つけられなかったので 使用マシン独自のトラブルかとも思ったりしますし 教えて頂いた事試してみて様子を見て まだ問題があるようでしたら改めて質問させていただく事として 今回はひとまず解決済みとさせていただきます ありがとうございました