マクロを使用してワークシートを印刷する場合、マクロが出力の送信先となる実際のプリンターを指定できることは既にご存知でしょう。

そのプリンタで使用する特定の用紙トレイも指定したい場合はどうなりますか?残念ながら、これは少し粘着性のある改札になります。

問題は、使用する用紙トレイを設定するために[ページ設定]ダイアログボックスの[オプション]ボタンをクリックすると、表示される内容がExcelの制御ではなく、完全にプリンタドライバの制御下にあることです。

これはあなたにとってどういう意味ですか?これは、Excelマクロでプリンタートレイを指定するために使用できるコマンドがないことを意味します。ただし、試すことができるいくつかの回避策があります。最初の回避策は、Windowsでさまざまなプリンター定義を定義し、それぞれが特定のプリンタートレイを使用するように調整することです。次の一般的な手順に従ってください:

。プリンタで使用する用紙トレイの数を決定します。

。使用する用紙トレイごとに新しいプリンタを定義します。たとえば、3つの異なる用紙トレイを使用する場合は、それぞれが用紙トレイを表す名前を持つ3つのプリンタを定義します。

。プリンタ定義を右クリックし、プリンタのプロパティを変更して、目的の用紙トレイに印刷されるようにします。

。他のプリンタ定義ごとに手順3を繰り返し、それぞれに異なる用紙トレイを指定していることを確認します。

この時点で、複数のプリンター定義が設定されており、それぞれが同じプリンターの異なる用紙トレイに印刷されます。 Excel内で、マクロで目的のプリンターを指定して、印刷出力が目的のプリンター定義、つまり目的の用紙トレイに移動するようにすることができます。もちろん、このソリューションの唯一の欠点は、かなりのセットアップ作業が必要になることです。 50人のユーザーがいるオフィスで作業している場合、これは、50人すべてが上記のように各プリンターを定義していることを確認する必要があることを意味します。

別の回避策には、マクロでSendKeysステートメントを使用することが含まれます。 SendKeysに関する情報は、Excelで利用できるVBAオンラインヘルプにありますが、基本的には、ユーザーが入力するのと同じように、キーボードバッファーに一連のキーを押すことです。したがって、理論的には、[ページ設定]ダイアログボックスを開き、[オプション]をクリックして、別のプリンタトレイを選択するためのキー押下をエミュレートするようにマクロを設定できます。

ただし、SendKeysには潜在的な問題があります。キーストロークが実際に目的の場所に移動することを保証する方法がないため、信頼性が低くなる可能性があります。マルチスレッドオペレーティングシステム(Windowsなど)では、他のプロセスが介入してコマンドを失敗させる可能性があります。さらに、SendKeysがご使用のコンピューターで機能する場合、同じバージョンのExcel、同じプリンター、および同じプリンタードライバーのバージョンがない限り、他のユーザーのコンピューターでは機能しない可能性があります。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2213)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Specifying_a_Paper_Tray_in_a_Macro [マクロでの用紙トレイの指定]