- ベストアンサー
vbaでプリンターを一時停止や準備完了にしたい
現在「RICOH」と言う名前のプリンターを使用しています。 これをアクセスvbaのコマンドボタンを押すたびに 「一時停止」「準備完了」と変化させるようにしたいのですがどうすればいいのでしょうか? そもそもこのプリンターのパスがわかりません。 ご教授よろしくお願い致します。 (access2003です)
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Win32APIのSetJobを使用すれば印刷ジョブの一時停止はできます。 プリンタ自体の一時停止は忘れてしまいました・・・。 プリンタのジョブ状態を取得する、EnumJobs等ありますが、プリンタ関係のAPIはどれも当てになりません。 あくまでWindowsにインストールされているドライバ状態の監視でしかないためです。 印刷ジョブを実行し、プリンタに接続を試みたらだめだったというケースでは、印刷前はプリンタは準備完了状態だったが、実行後はエラー状態になるといった具合です。 解決する手段として、統一の方法はありません。 プリンタの仕様の統一規格がないため、メーカー独自のインタフェースの利用が求められてしまいます。 EPSONのプリンターでプリンターの異常を画面に表示するという画面を作成したことがありますが、その際はSNMPプロトコルを使用し、プリンターの状態を取得したことがありました。 RICOHだとちょっとわからないです。 パスはネットワークプリンタであれば、IPが割り当てられています。 シリアルだと、ちょっとわかりませんが、シリアルポートに対して出力するため、パスという概念はないのではないでしょうか? そのためのドライバということが言えます。 APIの制御ではOpenPrinterという関数を使用し、プリンタのドライバ名からハンドルを取得して制御します。
お礼
おおー! 難しそうですね! APIですか。勉強してみます。 大変参考になりました。ご回答ありがとうございます。