
マクロで印刷の途中でプリンタのメッセージが出ると止まってしまいます
Excel2007でベースのデータシートからフィルタで条件に合うデータを取り出し
同じファイルの印刷用としている別シートに貼り付けて罫線ページ計など体裁を整えて印刷
の処理をループで繰り返しています
通常は目的の処理が出来ていますが
印刷しているプリンタのインクが無くなった時などプリンタのメッセージが出ると
メッセージを閉じても続きのマクロが実行されず止まってしまいます
止まってしまうとファイルを閉じる事もできなくなり
止む無く強制終了すると閉じた後VisualBasicの ここで終了することはできません
というメッセージが出て閉じます
再度そのファイルを開くと前回の処理が終わったところで開きます
プリンタからのメッセージが出るときだけに起きる現象なのですが
対処する方法がわかりません
よろしくお願いします
No.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://oshiete.goo.ne.jp/qa/120709.html
お勧めしませんが。
>逆にすべてのフィルタ条件を一度で戻せるマクロを作っておく方がストレス無く解決する
それは、簡単だと思います。
Sub Test1()
'オートフィルタ条件解除
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
'オートフィルタ解除
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilter.Range.AutoFilter
End If
End Sub
何度も回答をありがとうございます
時間がとれなくてチェックが遅くなり申し訳ありません
実は今回質問の印刷は月に数回特定の日に実行されるので
まだプリンタ設定の変更も 電源offも試せていません
結果が出てから 報告も兼ねて解決済みにと考えていたため
まだ締めておりませんでした
とりあえずのフィルタ条件解除のマクロは自身でも作ってみましたが
なにぶん記録したマクロをベースにして編集でしか作れない程度の
未熟者なもので1コ1コ戻していました(-_-;)
たった2行で戻せるのですね!勉強になりました
通常は起こらない例との事ですし
検索しても似たような事例が見つけられなかったので
使用マシン独自のトラブルかとも思ったりしますし
教えて頂いた事試してみて様子を見て
まだ問題があるようでしたら改めて質問させていただく事として
今回はひとまず解決済みとさせていただきます
ありがとうございました
No.2
- 回答日時:
>プリンタのメッセージが出るとメッセージを閉じても続きのマクロが実行されず止まってしまいます
>対処する方法がわかりません
あまり、そういう例は起こらないはずですが、マクロが止まった場合は、プリンターの電源を切ればよかったはずです。マクロで、割込を入れるという方法がないとは言えませんが、常に、プリンタとの通信をインターラクティブですると、とても、マクロが遅くなると思います。
他に、常に、ループで一枚ずつPrintOut して、途中で割込が入れられるように、DoEvents を入れる方法というのもありますが、通常は、そのようなことはしませんね。
回答ありがとうございます
プリンタの電源を切るのは思いつかなかったので今度試してみます
今回質問のファイルの印刷マクロは
一度の実行で条件を変えて何度も印刷用データを取り出しますが
中には印刷不要の内容の時もあるので
都度プレビュー画面を表示し 印刷するなら印刷ボタン
不要なら閉じるボタンでビューを閉じると
続いてループ処理が実行されるようにしています
ユーザーが目で見て判断できるので使いやすく
何度もやり直しもできてなかなかうまく作れたと思っていますが
インクジェットプリンタの為か
インクが無くなった、用紙が無くなった だけでなく
インクが少なくなっただけでもいちいちメッセージが出てきて
止まってしまうと無理矢理終了したあとのファイルは
データのシートがいくつもフィルタ掛かったままになっているので
それを戻してシート保護をかけて・・・となかなか面倒なので・・・
逆にすべてのフィルタ条件を一度で戻せるマクロを
作っておく方がストレス無く解決するかもと思うようになりました
またなにかありましたらよろしくお願いします
ありがとうございました
No.1
- 回答日時:
もしかするとインクを取り替えてプリンタがノーマルな稼働状態に復帰すれば,プリンタから応答が返ってようやく動き出すかもしれませんね。
ExcelVBA内での出来事では無いので,プログラム側で簡易な対処が可能なトラブルでは無いと思います。印刷関連は,他にも「印刷プレビュー画面でトラブると一切制御を受け付けなくなる」など,マクロにとっては鬼門です。
もしかすると。
Excelを終了した状態で,ウィンドウズのスタートメニューのプリンタとファックスから当該のプリンタを右クリックしてプロパティを出します。詳細設定のタブでプリンタスプールもしくはプリンタに直接印刷データを送るなどの設定を,今の設定から違うのに変えてみると,ご相談のトラブル時にもロックアウトされてしまうのを逃れられるかも?しれません。
ただし通常の印刷にも直接影響する設定なので,今回ご相談のトラブルの発生頻度(結局その一回を諦めれば,終わりといえば終わりのトラブル)と,毎日の運用にどの程度の影響が現れるか天秤にかけて対応を検討してみてください。
回答ありがとうございます
以前にもネットワークプリンタの切り替えがマクロでは出来ず困った経験もあり
印刷関連は苦労していますがやっぱり仕方ありませんか・・・
(ちなみにプリンタの切替えは
”××のプリンタを選択してください”とのメッセージを出してから
プリンタ選択のダイアログを出してユーザーに選択させる事で対処しました)
プリンタの設定を変える事が他の作業にどの程度影響するのかわかりませんが
ダメもとで一度試してみようと思います
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- プリンタ・スキャナー エプソンのプリンタEP-879AWを使っていますが印刷文字がぼやけます。 家電量販店で写真印刷がメイ 4 2022/03/26 23:20
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- PDF EXCEL ページを指定してPDF出力するVBAを教えてください。 2 2023/02/09 10:27
- プリンタ・スキャナー インクカートリッジからインクを取り出せるか 3 2022/11/17 10:32
- プリンタ・スキャナー 佐川急便のプリンターで印刷用の送り状が印刷時に詰まる 2 2022/11/23 18:25
- プリンタ・スキャナー プリンタを無線化したい 7 2023/04/08 06:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCを立ち上げると同時に、プリ...
-
同機種のプリンターを買った場...
-
エクセルの余白の塗りつぶし方法
-
マクロでプリンタ、用紙、給紙...
-
印刷が途中のページで止まって...
-
太文字が印刷されない。
-
印刷ができません (PCを再起...
-
「指定したPPDは無効です」でプ...
-
プリンタをBluetoothで無線化し...
-
印刷をしようとするとFAX送...
-
アプリ毎にデフォルトのプリン...
-
左右反転印刷は?
-
プリンタドライバについて
-
富士ゼロックスのプリンタドラ...
-
このドキュメントはプリンタに...
-
印刷作業が重い
-
Windows3.1 接続プリンタ
-
ネットワーク上のプリンタ名を取得
-
ラインが繋がっているのにオフ...
-
エクセルのマクロについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同機種のプリンターを買った場...
-
エクセルの余白の塗りつぶし方法
-
マクロでプリンタ、用紙、給紙...
-
「指定したPPDは無効です」でプ...
-
左右反転印刷は?
-
太文字が印刷されない。
-
プリンタをBluetoothで無線化し...
-
印刷できません。
-
エクセルの用紙サイズについて...
-
エクセルでの袋とじ
-
PCを立ち上げると同時に、プリ...
-
複数のシートを一括で手差し→自...
-
印刷プレビューにない文字が印...
-
プリンターが見つかるのに、接...
-
印刷ができません (PCを再起...
-
ワードで背景を入れたのですが...
-
エミュレーションキットとは
-
印刷をしようとするとFAX送...
-
印刷作業が重い
-
商蔵奉行のプリンタ設定について
おすすめ情報