| 
    
     |  | とりあえずアゲておきます。 
 私はあまり詳しくないので識者の回答を待ってください。
 
 
 以下、私見です。
 
 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操作の知識が必要になります。
 
 |  |