Office ソリューションの遅延バインディング
Office アプリケーションのオブジェクト モデルの一部の型には、遅延バインディング機能を通じて使用できる機能があります。たとえば、一部のメソッドおよびプロパティは、Office アプリケーションのコンテキストに応じて異なるオブジェクトの型を返すことができ、一部の型は異なるコンテキストで異なるメソッドまたはプロパティを公開できます。
対象: このトピックの情報は、Office 2013 および Office 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
Visual Basic は Option Strict が消え、.NET Framework 4 を対象としている場合、または .NET Framework 4.5 がこれらの遅延バインディング機能を持つ型を直接使用できる Visual C# プロジェクトまたはプロジェクトが。
オブジェクト戻り値の暗黙的および明示的なキャスト
Microsoft Office プライマリ相互運用機能アセンブリ (PIA: Primary Interop Assembly) の多くのメソッドとプロパティは、いくつかの異なる型のオブジェクトを返すことができるため、Object 値を返します。たとえば、ActiveSheet プロパティは、作業中のシートが何であるかに応じて戻り値が Worksheet オブジェクトまたは Chart オブジェクトになるため、Object を返します。
メソッドまたはプロパティが Objectを返すと、入力します Option Strict がオンの Visual Basic プロジェクトを明示的に (Visual Basic では) を適切なにオブジェクトを変換する必要があります。Option Strict がオフの Visual Basic プロジェクトの Object の戻り値を明示的にキャストする必要はありません。
ほとんどの場合、Object を返すメンバーの戻り値として使用できる型の一覧は、リファレンス ドキュメントに記載されています。オブジェクトを変換またはキャストすると、コード エディターでオブジェクトに対する IntelliSense が有効になります。
Visual Basic での変換については、「暗黙の型変換と明示的な型変換 (Visual Basic)」および「CType 関数 (Visual Basic)」を参照してください。
例
次のコード例では、特定のオブジェクトをキャストする方法も示します Option Strict がオンの Visual Basic プロジェクトを示します。この種類のプロジェクトでは、Rangeに明示的に Cells のプロパティをキャストする必要があります。この例では、Sheet1 という名前のワークシート クラスを持つドキュメント レベルの Excel プロジェクトが必要です。
Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)
次のコード例では、Option Strict がオフの Visual Basic プロジェクトまたは .NET Framework 4 を対象とする Visual C# プロジェクトで、オブジェクトを特定の型に暗黙的にキャストする方法を示します。これらのプロジェクトの種類では、Cells プロパティが Range に暗黙にキャストされます。この例では、Sheet1 という名前のワークシート クラスを持つドキュメント レベルの Excel プロジェクトが必要です。
Dim dynamicRange As Excel.Range = Globals.Sheet1.Cells(1, 1)
Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];
遅延バインディングを介してのみ使用できるメンバーへのアクセス
Office PIA の一部のプロパティおよびメソッドは、遅延バインディングを介してのみ使用できます。Visual Basic で遅延バインディング メンバーにアクセスするには Option Strict がどこからからこれらの言語で .NET Framework 4 いるか、または .NET Framework 4.5を対象とする Visual C# で、遅延バインディング機能を使用できるプロジェクトまたはプロジェクト。Visual Basic では Option Strict がどこにあるか、リフレクションをこれらのメンバーにアクセスする必要があります。
例
次のコード例では、Option Strict がオフの Visual Basic プロジェクトまたは .NET Framework 4 を対象とする Visual C# プロジェクトで、遅延バインディングされたメンバーにアクセスする方法を示します。この例では、Word の [ファイルを開く] ダイアログ ボックスの遅延バインディングされた Name プロパティにアクセスします。このコード例を使用するには、Word プロジェクトの ThisDocument クラスまたは ThisAddIn クラスから実行します。
Private Sub TestDynamicDialog()
Dim dialog As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
dialog.Name = "Testing"
dialog.Show()
MessageBox.Show(dialog.Name)
End Sub
dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);
次のコード例に Option Strict がオンの Visual Basic プロジェクトで同じタスクを実行するためにリフレクションを使用する方法を示します。
Dim dlg As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
Dim dlgType As Type = GetType(Word.Dialog)
' Set the Name property of the dialog box.
dlgType.InvokeMember("Name", _
Reflection.BindingFlags.SetProperty Or _
Reflection.BindingFlags.Public Or _
Reflection.BindingFlags.Instance, _
Nothing, dlg, New Object() {"Testing"}, _
System.Globalization.CultureInfo.InvariantCulture)
' Display the dialog box.
dlg.Show()
' Show the Name property.
MessageBox.Show(dlgType.InvokeMember("Name", _
Reflection.BindingFlags.GetProperty Or _
Reflection.BindingFlags.Public Or _
Reflection.BindingFlags.Instance, _
Nothing, dlg, Nothing, _
System.Globalization.CultureInfo.InvariantCulture))