2014/02/15

2/15/2014
 筆者はExcelを帳票出力として利用するシステムを作成していますが、Excelのプリンタ設定ダイアログで行えるプリンタ機種依存の詳細設定(2ページを1ページに縮小や、トレイ指定、両面印刷等)がVBAから制御不可能であるため、この設定については諦めていました。

 Windowsのプリンタ構造から、DEVMODE構造体が得られれば、この構造体の後続に付与される、拡張部分に詳細設定の情報が入っているのはわかっているのですが、Excelの場合はわからない。
 筆者はOffice製品には少々弱いので、ここでお手上げだったのです。
 (Excel2007以降のxlsxファイルでは、ファイルをunzipすると現れるファイル中に、DEVMODE構造体のバイナリファイルを見つけているので、絶対にDEVMODEでやっているのは確実なのです。)

 で、思い出すごとに検索を続けていたのですが、とうとう見つけました。

  Chapter.24 IPrint このインターフェースはDEVMODEとDEVNAMESをマーシャリングすることにより印刷を詳細に制御 Excelの場合、IPrintインターフェースはWorkbookオブジェクトに実装されているので、まず始めにWorkbookオブジェクトを取得

 なんと親切な!!感動です、今までどこにいたんだ本当に。抱きしめて頬ずりしてやりたい。
 (気持ち悪いなんて言わないでー)

 ともはやここまで入り口がみえれば後はどう組み込んでやるかという問題なので、長く口を閉ざしていたコンチクショウも、陥落は近いでしょう。

 また、実装サンプルができたら投稿します。 

0 コメント:

コメントを投稿