次の方法で共有


Office ソリューションの省略可能なパラメーター

Microsoft Office アプリケーションのオブジェクト モデルに含まれるメソッドの多くは、省略可能なパラメーターを受け取ります。Visual Studio 2012 で Visual Basic を使用して Office ソリューションを開発する場合は、省略可能なパラメーターに値を渡す必要はありません。省略したパラメーターに対しては自動的に既定値が使用されます。ほとんどの場合、Visual C#プロジェクトの省略可能なパラメーターを省略できます。ただし、ドキュメント レベルのWordプロジェクトの ThisDocument クラスの ref の省略可能なパラメーターを省略できません。

対象: このトピックの情報は、Office 2013 および Office 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

Visual C# プロジェクトおよび Visual Basic プロジェクトでの省略可能なパラメーターの使用の詳細については、「名前付き引数と省略可能な引数 (C# プログラミング ガイド)」および「省略可能なパラメーター (Visual Basic)」を参照してください。

[!メモ]

旧バージョンの Visual Studio では、Visual C# プロジェクトのすべての省略可能なパラメーターに値を渡す必要があります。便宜上、これらのプロジェクトには missing というグローバル変数が含まれています。パラメーターの既定値を使用する場合に、このグローバル変数を省略可能なパラメーターに渡すことができます。Visual Studio 2012 の Office の Visual C# プロジェクトにも missing 変数が含まれていますが、通常、Visual Studio 2012 で Office ソリューションを開発する場合は、この変数を使用する必要はありません。ただし、ドキュメント レベルの Word プロジェクトで、省略可能な ref パラメーターを持つ ThisDocument クラスのメソッドを呼び出す場合は例外です。

Excel の例

Worksheet.CheckSpelling メソッドには、多くの省略可能なパラメーターがあります。次のコード例に示すように、一部のパラメーターの値を指定し、他のパラメーターには既定値を使用することができます。この例では、Sheet1 というワークシート クラスを持つドキュメント レベルのプロジェクトが必要です。

Globals.Sheet1.CheckSpelling(ignoreUppercase:=True)

Globals.Sheet1.CheckSpelling(ignoreUppercase: true);

Word の例

Find.Execute メソッドには、多くの省略可能なパラメーターがあります。次のコード例に示すように、一部のパラメーターの値を指定し、他のパラメーターには既定値を使用することができます。

With Me.Application.ActiveDocument.Content
    .Find.ClearFormatting()
    .Find.Execute(FindText:="blue", ReplaceWith:="red", Replace:=Word.WdReplace.wdReplaceAll)
End With
Word.Range documentRange = this.Application.ActiveDocument.Content;
documentRange.Find.ClearFormatting();
documentRange.Find.Execute(FindText: "blue", ReplaceWith: "red", Replace: Word.WdReplace.wdReplaceAll);            

Word 用の Visual C# ドキュメント レベル プロジェクトの ThisDocument クラスでのメソッドの省略可能なパラメーターの使用

Word オブジェクト モデルには、Object 値を使用する省略可能な ref パラメーターを持つメソッドが多数あります。しかし、Word 用の Visual C# ドキュメント レベル プロジェクトでは、生成された ThisDocument クラスのメソッドの省略可能なパラメーター ref を省略できません。Visual C# では、クラスではなくインターフェイスのメソッドについてのみ、省略可能な ref パラメーターを省略できます。たとえば、次のコード例ではコンパイルしません。これは、ThisDocument クラスの CheckSpelling メソッドの省略可能な ref パラメーターを省略できないためです。

Globals.ThisDocument.CheckSpelling(ignoreUppercase: true);

ThisDocument クラスのメソッドを呼び出す場合は、次のガイドラインに従います。

  • 省略可能な ref パラメーターの既定値を使用するには、パラメーターに missing 変数を渡します。missing 変数は Visual C# Office プロジェクトで自動的に定義され、生成されたプロジェクト コード内で Type.Missing 値に割り当てられます。

  • 省略可能な ref パラメーターに独自の値を指定するには、指定する値に割り当てられるオブジェクトを宣言し、オブジェクトをパラメーターに渡します。

次のコード例は、ignoreUppercase パラメーターの値を指定し、他のパラメーターの既定値を受け入れることで CheckSpelling メソッドを呼び出す方法を示しています。

object ignoreUppercase = true;
Globals.ThisDocument.CheckSpelling(
    ref missing, ref ignoreUppercase, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

ThisDocument クラスのメソッドの省略可能な ref パラメーターを省略するコードを記述するには、別の方法として、InnerObject プロパティから返される Microsoft.Office.Interop.Word.Document オブジェクトの同じメソッドを呼び出し、そのメソッドのパラメーターを省略することができます。これは、Microsoft.Office.Interop.Word.Document がクラスではなくインターフェイスであるためです。

Globals.ThisDocument.InnerObject.CheckSpelling(IgnoreUppercase: true);

値型のパラメーターと参照型のパラメーターの詳細については、「引数の値渡しと参照渡し (Visual Basic)」(Visual Basic の場合) および「パラメーターの引き渡し (C# プログラミング ガイド)」を参照してください。

参照

概念

Office ソリューションのコードの記述

その他の技術情報

Office ソリューションの開発