2017年11月
      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) | トップページ | 関連付けは非同期実行なので、連続処理に向かない。 »