- ベストアンサー
Excel VBAを使って給紙方法を変更する(キーストローク使用)
ExcelのVBAを使って印刷するものによって給紙方法を変えたいと思っています。 調べてみたところ'SendKeysステートメントを使うと設定できそうだったので、下記のような命令文を作ってみたのですがうまく動きません。 どなたか詳しい方いらっしゃいましたら教えていただけないでしょうか? OS:WindowsXP 使用ソフト:Microsoft Excel2003 使用プリンタ:NEC PR-2860N 【コマンドボタン】 本書印刷 → 印刷範囲:「一枚目」(あらかじめ設定してある名前) 給紙方法:自動 控え印刷 → 印刷範囲:「二枚目」 給紙方法:ホッパー2 Private Sub 控え印刷_Click() With ActiveSheet.PageSetup .PrintArea = "二枚目" End With MyPrinterSet ActiveSheet.PrintOut End Sub ―――――――――――――――――――――――――――――― Private Sub 本書印刷_Click() With ActiveSheet.PageSetup .PrintArea = "一枚目" End With MyPrinterSet2 ActiveSheet.PrintOut End Sub ――――――――――――――――――――――――――――――― Private Sub MyPrinterSet() 'SendKeysステートメントでプリンタ設定 '自動給紙から手差しへ変更 ActiveSheet.Select SendKeys "%FU" 'Excel画面でファイル(F)、ページ設定... SendKeys "%O" ‘オプション SendKeys "{TAB 8}" ‘一番端の[メイン]のタブに合わせる SendKeys "{RIGHT}" ‘一つ右の[用紙]タブへ移動 SendKeys "%S" ‘給紙方法選択 SendKeys "{DOWN 2}" 'ホッパー2に設定 SendKeys "{ENTER}" SendKeys "{TAB 5}" ‘[用紙]タブを選択 SendKeys "{LEFT}" ‘一つ左の[メイン]タブへ移動 SendKeys "{ENTER 2}" ―――――――――――――――――――――――――――――― End Sub Private Sub MyPrinterSet2() 'SendKeysステートメントでプリンタ設定 '例、EPSON LP-****を手差しから自動へ変更 ActiveSheet.Select SendKeys "%FU" 'Excel画面でファイル(F)、ページ設定... SendKeys "%O" SendKeys "{TAB 4}" ‘初期値へ戻すを選ぶ SendKeys "{ENTER 4}" End Sub ――――――――――――――――――――――――――――――
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sendkeysでやるなら、waitを入れないといけません。 設定画面を開くかどうかの判定を待たずにキー入力していまいます。 そして、待たされる時間というのはPCの能力や状態によって変わるものです。故に、不安定です。 画面が開くまでの間に Application.wait Time:=now+TimeValue("00:00:01") とかを間に入れてみてください。(間に合わなければ00:00:02とか) 1つのSendkeyも、 Sendkeys "XXX", True とかにして調節してみてください。 こんな感じでうまいwait時間を見つけたとしても、やっぱり不安定なのは変わらないと思います。 私も作業軽減のためにSendkeysを使いますが、数回~数十回に一回は失敗します。それでも楽は楽なので使っていますがね。
その他の回答 (1)
SendKeysは不安定なので 止めといた方がいいです。 ぐだぐだとやるより コントロールパネルに 同じプリンタを追加して そっちのデフォルト設定で 給紙を指定のものにしておけばいいのでは? それなら プリンタを変更するマクロを作るだけで済みます。
補足
いちいち設定するのがめんどうだなあと簡単な気持ちでやってみたのですが、 ほんとにグダグダになってしまいどうしようかと思っていました。 その方法を先にやろうと思ったのですが、 会社のパソコンは共有して使っているので余計なのを増やすな といわれてしまってできなかったのです。 もしかしてそれを何とかするほうが簡単なのでしょうか;
お礼
おかげさまで何とかかんとか動くようにはなりました。 不安定に変わりはないんですね^^; でもやっぱり便利なので使ってみたいと思います。 ご丁寧にありがとうございました。