Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36533 / 76738 ←次へ | 前へ→

【45384】Re:印刷用紙サイズの設定
発言  dy  - 06/12/21(木) 13:58 -

引用なし
パスワード
   とりあえずアゲておきます。

私はあまり詳しくないので識者の回答を待ってください。


以下、私見です。

1.PageSetup.PaperSizeを使用する場合
XlPaperA4 などの組み込み定数で唯一可能性があるのは
「 xlPaperUser ユーザー設定」
でしょう。
プリンタにユーザー設定(ユーザー定義)の用紙があり、
かつそれを xlPaperUser で設定できれば可能かもしれません。
ちなみに、私の環境でユーザー設定ができるプリンターで
試してみましたが駄目でした。
値を確認したところ「306」が返ってきました。

※ xlPaperUser の値は「256」です。
Debug.Print xlPaperUser

http://msdn.microsoft.com/library/ja/vbaxl11/html/xlhowConstants.asp?frame=true 
で確認できます。

未確認ですが、ユーザー設定がどのパソコンにも同じ値を返すのであれば利用できるかもしれません。


次に、プリンタドライバソフトで設定する方法が考えられます。
ご存知だと思いますが
<ファイル>ー<ペ−ジ設定>で設定する項目はエクセル標準のものなので
PageSetup オブジェクトで設定できます。
しかし、そこから<オプション>で表示されるダイアログは、
各プリンタ独自のドライバソフトになるので、
外部アプリケーションを操作するのと同じになります。(たぶん)
そこで、以下の2つの方法が考えられます。


2.プリンタドライバソフトをSendKeysを使って操作
SendKeys:キーボードからの操作をプログラムする
ただしこれはアクティブなウィンドウに対してキーボード操作を行なうだけなので、
フォーカスが別のウィンドウにあったり、移ってしまった場合は当然うまくいきません。


3.プリンタドライバソフトをAPIを使って操作
APIを使用すれば SendKeys とは違い確実な操作が出来ます。
「FindWindowEx」、「EnumWindows」、「SendMessage」、「PostMessage」
あたりのAPIを使用すればたぶん・・・できます。
ただ、こちらはそれなりにAPI操作の知識が必要になります。

1 hits

【45343】印刷用紙サイズの設定 伊藤 06/12/20(水) 9:45 質問
【45384】Re:印刷用紙サイズの設定 dy 06/12/21(木) 13:58 発言
【45386】Re:印刷用紙サイズの設定 伊藤 06/12/21(木) 16:13 お礼

36533 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free