アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロ処理でフォーム上のボタンから
印刷ダイアログを呼び出して、そのダイアログを
Sendkeysでもって両面印刷設定にし印刷させると
いう処理を行いたいのですが上手くいきません。

印刷ダイアログが表示された段階で止まり(エラーで
止まるわけではなく単に処理が止まる)、その先の
Sendkeysによる命令へ進みません。

Private Sub CommandButton1_Click()
Application.Dialogs(xlDialogPrint).Show
SendKeys "%r", True
SendKeys "%k", True
SendKeys "^{tab}", True
SendKeys "^{tab}", True
SendKeys "^{tab}", True
SendKeys "%r", True
SendKeys "{enter}", True
SendKeys "+{tab}", True
SendKeys "+{tab}", True
SendKeys "+{tab}", True
SendKeys "+{tab}", True
SendKeys "{enter}", True
SendKeys "+{tab}", True
SendKeys "+{tab}", True
SendKeys "+{tab}", True
SendKeys "{enter}", True
End Sub

よくSendKeysは環境によって誤作動などが起こるので
使わない方がいいと言われますが、一度どのように
動くのか試してみたいと思っています。

ちなみに上のコードは当方のプリンタでの設定手順となります。

SendKeysで印刷ダイアログにキーを送ることは
できないのでしょうか?

宜しくお願いします。

A 回答 (2件)

単純な


Sub test()
Application.Dialogs(xlDialogPrint).Show
MsgBox ("Done!")
End Sub
というマクロを作って試してみましたが、印刷ダイアログを閉じない限り、メッセージボックスが現れないです。

と言うことは、印刷ダイアログを出した時点でマクロはそこで止まってしまい、その後の命令はダイアログが閉じないと実行されないということだと思うので、SendKeysは印刷ダイアログには送られないのでしょう。

他に方法がないか検索してみたのですが、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr; …
によると、
「EXCEL VBAからプリンタの設定を操作するのは、かなり困難なようです。」
らしいです。
    • good
    • 0
この回答へのお礼

試作までして頂き有難うございました。

この手の質問はネット上でも山ほどあるのですが
やはりエクセルから直接設定を調整するには
かなりの知識が必要なようです。

フリーランスの他プログラムを用いて同様の
処理を行うやり方なども見つけたのですが、
複数の人間がそれぞれ異なるパソコンで
使うファイルの為、エクセルのみで完結させることが
前提でしたので、この方法は仕方なく諦めることに
しました。

解決とまでは言えませんが、印刷ダイアログ表示前に
両面設定にする旨のメッセージを表示させることで
対処した次第です。

また何かありましたら宜しくお願いします。

お礼日時:2007/01/19 20:16

こんばんは。



Sendkeys の代わりに、UWSCを使えば出来るのでは?

Application.Dialogs で、ダイアログを出したら、後は、
UWSC のスクリプトを作っておいて、

Shell で、このUWSC.EXE を呼び出して、プリンタの設定させればよいと思います。

http://www.h7.dion.ne.jp/~umiumi/
    • good
    • 2
この回答へのお礼

当方でもフリーランスの他プログラムを用いて同様の
処理を行うやり方などを見つけたのですが、
複数の人間がそれぞれ異なるパソコンで
使うファイルの為、エクセルのみで完結させることが
前提でしたので、この方法は仕方なく諦めることに
しました。

解決とまでは言えませんが、印刷ダイアログ表示前に
両面設定にする旨のメッセージを表示させることで
対処した次第です。

また何かありましたら宜しくお願いします。

お礼日時:2007/01/19 20:20

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

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


このQ&Aを見た人がよく見るQ&A