大人になっても苦手な食べ物、ありますか?

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
――――――――――――――――――――――――――――――

A 回答 (2件)

Sendkeysでやるなら、waitを入れないといけません。


設定画面を開くかどうかの判定を待たずにキー入力していまいます。
そして、待たされる時間というのはPCの能力や状態によって変わるものです。故に、不安定です。

画面が開くまでの間に
Application.wait Time:=now+TimeValue("00:00:01")
とかを間に入れてみてください。(間に合わなければ00:00:02とか)
1つのSendkeyも、
Sendkeys "XXX", True
とかにして調節してみてください。

こんな感じでうまいwait時間を見つけたとしても、やっぱり不安定なのは変わらないと思います。

私も作業軽減のためにSendkeysを使いますが、数回~数十回に一回は失敗します。それでも楽は楽なので使っていますがね。
    • good
    • 1
この回答へのお礼

おかげさまで何とかかんとか動くようにはなりました。
不安定に変わりはないんですね^^;
でもやっぱり便利なので使ってみたいと思います。
ご丁寧にありがとうございました。

お礼日時:2008/07/11 15:28

SendKeysは不安定なので 止めといた方がいいです。



ぐだぐだとやるより コントロールパネルに 同じプリンタを追加して
そっちのデフォルト設定で 給紙を指定のものにしておけばいいのでは?

それなら プリンタを変更するマクロを作るだけで済みます。

この回答への補足

いちいち設定するのがめんどうだなあと簡単な気持ちでやってみたのですが、
ほんとにグダグダになってしまいどうしようかと思っていました。

その方法を先にやろうと思ったのですが、
会社のパソコンは共有して使っているので余計なのを増やすな
といわれてしまってできなかったのです。
もしかしてそれを何とかするほうが簡単なのでしょうか;

補足日時:2008/07/11 17:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報