HOME > 即効テクニック > Excel VBA > その他関連のテクニック > Excelの組み込みダイアログを使う

即効テクニック

その他関連のテクニック

Excelの組み込みダイアログを使う

(Excel 97/2000/2002/2003/2007)
ワークシートを印刷するにはPrintOutメソッドを実行します。
たとえば、次のコードはアクティブシートを印刷します。

Sub Sample1()
    ActiveSheet.PrintOut
End Sub
Excelの印刷機能には豊富な設定項目があります。印刷する部数を指定するには、PrintOutメソッドの引数Copiesに印刷部数を指定してやります。 マクロを実行するつど、この印刷部数をユーザーが指定できるようにするには、下記のようにすればいいでしょう。
Sub Sample2()
    Dim n As Long
    n = Val(InputBox("印刷部数を入力してください"))
    If n < 1 Then Exit Sub
    ActiveSheet.PrintOut Copies:=n
End Sub
しかし、マクロを実行するたびに「用紙の向きも設定したい」とか「印刷する前にプレビューで確認したい」などの要望があったらどうしましょう。 印刷に関するすべての設定項目をユーザーから受け取り、それを適切に処理するのは決して楽な作業ではありません。 そんなときは[印刷]ダイアログボックスを表示して、ユーザーに操作してもらいましょう。 しかし、PrintOutメソッドを実行すると、いきなり印刷が始まってしまいます。 [印刷]ダイアログボックスを表示するにはどうしたらいいのでしょう。 Excelに標準で組み込まれている各種のダイアログボックスはDialogsコレクションで操作することができます。 [印刷]ダイアログボックスはxlDialogPrintという定数が指定されていますので、次のようなコードで[印刷]ダイアログボックスを表示できます。
Sub Sample3()
    Application.Dialogs(xlDialogPrint).Show
End Sub
ダイアログボックスを表示するときの初期状態は引数で指定できます。 次のコードは印刷部数に「3」を指定してダイアログボックスを表示します。
Sub Sample4()
    Application.Dialogs(xlDialogPrint).Show Arg4:=3
End Sub
このように、Dialogsコレクションを使うことでExcelの組み込みダイアログボックスを表示することができますが、このDialogsコレクションは引数の指定が少し難解です。 [印刷]ダイアログボックスの場合は、全部で15の引数を指定でき、それぞれの引数は次のような名前付き引数になっています。
arg1 = 印刷範囲
arg2 = 開始
arg3 = 終了
arg4 = 部数
arg5 = 簡易印刷
arg6 = 印刷プレビュー
arg7 = メモ印刷
arg8 = カラー印刷
arg9 = 紙送り
arg10 = 印刷品質
arg11 = 縦方向の解像度
arg12 = 印刷対象
arg13 = プリンタ名
arg14 = ファイルへ出力
arg15 = 部単位で印刷
「arg1」「arg2」といった名前付き引数は全てのダイアログボックスで共通ですが、ダイアログボックスによって引数の意味が異なります。 定数xlDialogPasteSpecialを指定すると[形式を選択して貼り付け]ダイアログボックスが表示されますが、このダイアログボックスでは同じ引数が次のような意味になります。
arg1 = 貼り付けの種類
arg2 = 演算の種類
arg3 = 空白セルを無視
arg4 = 行列の入れ替え
このように、使い方にクセのあるDialogsコレクションですが、Excelに組み込まれているダイアログボックスを自由に表示できるのは便利です。ぜひ、覚えておきましょう。 なお、引数の種類などはExcelのヘルプに記載されています。