• ベストアンサー

vbaでプリンターを一時停止や準備完了にしたい

AKARI0418の回答

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

Win32APIのSetJobを使用すれば印刷ジョブの一時停止はできます。 プリンタ自体の一時停止は忘れてしまいました・・・。 プリンタのジョブ状態を取得する、EnumJobs等ありますが、プリンタ関係のAPIはどれも当てになりません。 あくまでWindowsにインストールされているドライバ状態の監視でしかないためです。 印刷ジョブを実行し、プリンタに接続を試みたらだめだったというケースでは、印刷前はプリンタは準備完了状態だったが、実行後はエラー状態になるといった具合です。 解決する手段として、統一の方法はありません。 プリンタの仕様の統一規格がないため、メーカー独自のインタフェースの利用が求められてしまいます。 EPSONのプリンターでプリンターの異常を画面に表示するという画面を作成したことがありますが、その際はSNMPプロトコルを使用し、プリンターの状態を取得したことがありました。 RICOHだとちょっとわからないです。 パスはネットワークプリンタであれば、IPが割り当てられています。 シリアルだと、ちょっとわかりませんが、シリアルポートに対して出力するため、パスという概念はないのではないでしょうか? そのためのドライバということが言えます。 APIの制御ではOpenPrinterという関数を使用し、プリンタのドライバ名からハンドルを取得して制御します。

noname#150256
質問者

お礼

おおー! 難しそうですね! APIですか。勉強してみます。 大変参考になりました。ご回答ありがとうございます。

関連するQ&A

  • VBAの一時停止

    エクセルのVBA の実行中に途中で一定時間(例えば10秒とか) 一時停止して その後再開するようなことが出来ますか またそのコマンドは何を使えばいいでしょうか 宜しくお願いします。

  • VBA 制限時間を、一時停止させたい

    Excel VBAでの質問です。Excel2007使用です。 ユーザーフォームに制限時間と、制限時間を一時停止させるコマンドボタンを作りたいです。制限時間(60分)は、下ので実行できたのですが、一時停止ができるか、わかりません。 Private Sub 制限時間_Click() Dim myTime As Date Dim myLImit As Date myLImit = Now + TimeValue("1:00:00") Do While myLImit > Now DoEvents myTime = myLImit - Now 分表示.Caption = Minute(myTime) & "分" 秒表示.Caption = Second(myTime) & "秒" Loop msgbox "終了です。" Unload Me End Sub できれば、ボタンを押すとmsgbox"一時停止"を表示させ、表示させている間は、制限時間を一時停止させたいです。制限時間、一時停止ができれば、違うコードでもかまいません。 どうぞよろしくお願いします。

  • Brother MFC-7460DNの一時停止解除

    Brother MFC-7460DNの一時停止解除について教えてください。現在設定にはMFC-7460DN printerとMFC-7460DN printer(コピー)のふたつが登録されています。これ意図したわけではなくいつの間にか前からこのようになっていました。今まではMCF-7460D printerを使っていたのですが、どうい訳かオフライン 一時停止となって出力できず、プリント待ちドキュメントが貯まってしまいました。プリンターの選択をMCF-7460D printer(コピー)にすると準備完了となりプリントできました。MFC-7460DNの一時停止を解除し従来通りに使用したいのですがその方法がわかりません。 教えてください。お願いします。

  • 一時停止の状態を解除できない EP-806AR

    EP-806AR一時停止の状態を解除できません。 「プリンターが一時停止の状態です」と表記され、「印刷再開」ボタンを押しても直りません。 プリンター本体やパソコンの電源を切って再度やっても同じです。 (「印刷の中止」をして「印刷待ち状態」をクリアにしても同じです。) Windows10を使っています。 ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • Accessの画面更新を一時的に停止する方法。

    こんにちは。 Accessの画面更新を一時的に停止する方法を捜しています。 ExcelのScreenUpdatingと同様な機能です。 VBAでの更新処理時に画面がチラチラと動くのを防止したいと思っています。 (Ver:Access2000) ご存知の方宜しくお願い致します。

  • ExcelのVBAで名前を付けて保存

    ExcelのVBAで名前を付けて保存としたいのですが、ユウザーフォーム上のテキストボックスに保存する名前を入力したらコマンドボタンでブックが終了するマクロを教えてほしいのですが。 よろしく御教授願います。

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • エクセルVBAのサイズについて

    エクセルファイル上にてVBAを記述したところ、 VBAのサイズが64Kを超えるようで、該当のVBAを保存する事ができません。 ただ、一時的に細かく作成したのですが、当初考えていたのは、1回コマンドボタンを押すと処理が完了するように想定していたのですが、現状のままでは、複数のコマンドボタンをそれぞれ押さないとできないと思われます。ちょっとその方法ですと面倒なので、ご質問です。 (当初は、マクロ1を作成したのですが、大きさの問題が生じたため、現状は便宜的にマクロ2・マクロ3という風に当初のマクロ1をわけて保存してあります) 1回の処理で同時に複数のマクロを実行する方法はあるのでしょうか? もしそのような方法があれば教えてください。 わかりづらい質問かもしれませんが宜しくお願いいたします。

  • マカフィー・インターネットセキュリティを一時的に停めるにはどうしますか。

    マカフィーをセキュリティーのために入れているのですがプリンターのドライバーをアップデートするために一時的にマカフィーを停めようと思ってマカフィーを立ち上げたのですがどこにも一時停止の項目が見つからず仕方なく停めずにドライバーをインストール完了しました。この場合でもちゃんとプリンタードライバーはインストールできたと思って大丈夫なのでしょうか?

  • コマンドプロンプトからプリンタドライバの削除がしたい

    困っています ローカルプリンタのドライバをコマンドプロンプトの操作で 削除したいのですがうまくいきません。 下記のコードをバッチファイルとして実行すると、 ------------------------------------------------------ @echo off rundll32 printui.dll,PrintUIEntry /dd /m "モデル名" ------------------------------------------------------ 「操作を完了できませんでした。指定されたプリンタドライバは現在、使用中です。」というエラーが出てしまいます。 プリンタとファックスで確認したところ ドライバの状態は「準備完了」で、 印刷待ちのジョブはありません。 ドライバの状態を一時停止に変えてみても、 同じエラーが出ます。 OSはwindowsXP プリンターはFUJITSUのレーザープリンターです。 説明不足名ところがありましたら補足します。 よろしくお願いします。