Office ソリューションの省略可能なパラメータについて
更新 : 2007 年 11 月
Microsoft Office アプリケーションのオブジェクト モデルに含まれるメソッドの多くは、省略可能なパラメータを受け取ります。省略可能なパラメータは、Visual Basic を使用してメソッドを呼び出す場合のみ省略可能になります。C# を使用して Microsoft Office アプリケーションに対するプログラミングを行うときには、すべてのパラメータについて値を渡す必要があります。
Visual Basic と Visual C# での省略可能なパラメータの相違点
Visual Basic を使用して Microsoft Office アプリケーションに対するプログラミングを行う場合は、省略可能なパラメータに値を渡す必要はありません。省略したパラメータに対しては自動的に既定値が使用されます。しかし、C# では省略可能なパラメータがサポートされていないため、すべてのパラメータについてメソッドに値を渡す必要があります。
Visual Studio Tools for Office プロジェクトには、生成されたコード内で値 Type.Missing が代入される missing という名前のグローバル変数が含まれます。このグローバル変数を渡すと、Object などの参照型を受け取る省略可能なパラメータの既定値を表すことができます。値型を受け取る省略可能なパラメータに対しては、実際の既定値を渡す必要があります。詳細については、「Visual C# で省略可能なパラメータに値型を渡す」を参照してください。
Excel の例
Worksheet.CheckSpelling メソッドは、値が参照型である以下の省略可能なパラメータを受け取ります。
CustomDictionary。メイン辞書の中で単語が見つからない場合にカスタム辞書を使用するかどうかを表します。
IgnoreUppercase。大文字を無視するかどうかを表します。
AlwaysSuggest。スペルの誤りを見つけたときに修正候補一覧を表示するかどうかを表します。
SpellLang。使用されている辞書の言語を表します。
次のコード例に示すように、これらのパラメータでは既定値を使用できます。
Globals.Sheet1.CheckSpelling()
Globals.Sheet1.CheckSpelling(missing, missing, missing, missing);
Word の例
C# から Microsoft Office Word のメソッドを呼び出すときは、一般に他の Office アプリケーションのメソッドを呼び出すときよりも複雑になります。これは、すべての省略可能なパラメータを参照渡しにする必要があるからです。
たとえば Document.CheckSpelling メソッドは、Word 文書のスペル チェックに関して次の省略可能なパラメータを受け取ります。
CustomDictionary。カスタム辞書のファイル名です。
IgnoreUppercase。大文字を無視するかどうかを表します。
AlwaysSuggest。スペルの誤りを見つけたときに修正候補一覧を表示するかどうかを表します。
CustomDictionary2 – CustomDictionary10。追加のカスタム辞書のファイル名です。最大 9 つの追加辞書を指定できます。
次のコード例に示すように、これらのパラメータでは既定値を使用できます。
Me.CheckSpelling()
this.CheckSpelling(
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
Visual C# で省略可能なパラメータに値型を渡す
Visual C# では、参照型を受け取る省略可能なパラメータにのみグローバル missing 変数を渡すことができます。値型を受け取る省略可能なパラメータには、実際の既定値を確認し、その値を渡す必要があります。
たとえば、NamedRange クラスの Sort メソッドは、Microsoft.Office.Interop.Excel.XlSortOrder など、さまざまな列挙値をパラメータとして受け取ります。これは値型なので、グローバルな missing 変数を渡すのではなく、XlSortOrder のいずれかの値を指定する必要があります。
値型のパラメータと参照型のパラメータの詳細については、「引数の値渡しおよび参照渡し」(Visual Basic の場合) および「パラメータの引き渡し (C# プログラミング ガイド)」を参照してください。