2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« 一時ファイルにスクリプトを書いて子プロセスを起こす。(その3) | トップページ | 関連付けは非同期実行なので、連続処理に向かない。 »

2007年11月10日 (土)

VBAからAdobe ReaderでPDFファイルを印刷する。(追記)

VBAからAdobe Readerで印刷する。(その2)
などで、解決済みなのですが、未だに頓珍漢な情報が流されてるようで困ったものです。:-(

この例で、特に支障なく動作するのですが、それを実際に試しもせずに、SendKeysを使ってるから駄目とか、教条主義的に決め付けるのはやめましょう。
また、代わりに、思い付きで、まともに動かない例を提示するのもやめましょう。
ちゃんと動作検証して、問題を十分理解してからにしてください。つーの。全く。。。

例えば、ShellExecuteやInvokeVerbでPrint Verbをキックする。

→ アプリが終了しないで残る。
→ 初回複数連続印刷で抜けが生じる。

⇒ これは、ダミーのインスタンスを起こして、後始末すれば大丈夫なんだけど。。。

例えば、FindWindow+WM_CLOSEやSC_CLOSEをSendMessageする。

→ 別のインスタンスを誤爆。

⇒ これは、プロセスIDで識別すれば大丈夫なんだけど。。。

例えば、COMオブジェクトを使え。

→ アプリ終了手段が用意されてないので、アプリが終了しないで残る。
→ 印刷しようとすると、警告ダイアログが出る。次から出さないようにはできるが、ユーザ依存だし、自動化できない。

例えば、DDEを使え。

→ 多重に使うと、別のインスタンスを誤爆するリスクが若干あるものの、シングルで使う分には確実なのでお勧め。

« 一時ファイルにスクリプトを書いて子プロセスを起こす。(その3) | トップページ | 関連付けは非同期実行なので、連続処理に向かない。 »