次の方法で共有


ApplicationFactory.GetVstoObject メソッド (_Worksheet)

指定されたネイティブなブック オブジェクトの機能を拡張する Microsoft.Office.Tools.Excel.Worksheet ホスト項目を返します。

名前空間:  Microsoft.Office.Tools.Excel
アセンブリ:   Microsoft.Office.Tools.Excel (Microsoft.Office.Tools.Excel.dll 内)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (Microsoft.Office.Tools.Excel.v4.0.Utilities.dll 内)

構文

'宣言
Function GetVstoObject ( _
    worksheet As _Worksheet _
) As Worksheet
Worksheet GetVstoObject(
    _Worksheet worksheet
)

パラメーター

戻り値

型 : Microsoft.Office.Tools.Excel.Worksheet
ネイティブなワークシート オブジェクトの機能を拡張するホスト項目です。

解説

このメソッドは、アプリケーション レベルのアドインから、Excel で開いているワークシートをカスタマイズする際に呼び出します。既存の Microsoft.Office.Tools.Excel.Worksheet オブジェクトが存在しない場合は、新しいオブジェクトが生成されます。それ以降の呼び出しでは、既存の Microsoft.Office.Tools.Excel.Worksheet オブジェクトのキャッシュされたインスタンスが返されます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

[!メモ]

worksheet パラメーターの型は、Microsoft.Office.Interop.Excel.Worksheet の親インターフェイスである Microsoft.Office.Interop.Excel._Worksheet 型です。したがって、このメソッドは、Microsoft.Office.Interop.Excel._WorksheetMicrosoft.Office.Interop.Excel.Worksheet の両方の種類のオブジェクトを受け取ることができます。Excel ワークシートを参照する場合は、Microsoft.Office.Interop.Excel.Worksheet を使用するのが一般的です。

次のコード例は、ホスト項目を持つ各 Microsoft.Office.Interop.Excel.Workbook オブジェクトに対する Microsoft.Office.Tools.Excel.Worksheet ホスト項目を作成します。このコードは、実行 ThisAddIn のクラスから、ターゲット .NET Framework 4 または .NET Framework 4.5を Excel アドイン プロジェクトで使用します。

Private Sub Application_WorkbookBeforeSave( _
    ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, _
    ByVal SaveAsUI As Boolean, _
    ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave

    If Globals.Factory.HasVstoObject(Wb) = True Then
        For Each interopSheet As Excel.Worksheet In Wb.Worksheets
            If Globals.Factory.HasVstoObject(interopSheet) = True Then
                Dim vstoSheet As Worksheet = Globals.Factory.GetVstoObject(interopSheet)
                If vstoSheet.Controls.Count > 0 Then
                    System.Windows.Forms.MessageBox.Show( _
                        "The VSTO controls are not persisted when you" _
                        + " save and close this workbook.", _
                        "Controls Persistence", _
                        System.Windows.Forms.MessageBoxButtons.OK, _
                        System.Windows.Forms.MessageBoxIcon.Warning)
                    Exit For
                End If
            End If
        Next
    End If
End Sub
void Application_WorkbookBeforeSave(
    Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, 
    ref bool Cancel)
{            
    if (Globals.Factory.HasVstoObject(Wb) == true)
    {                
        foreach (Excel.Worksheet interopSheet in Wb.Worksheets)
        {
            if (Globals.Factory.HasVstoObject(interopSheet) ==  true)
            {
                Worksheet vstoSheet = Globals.Factory.GetVstoObject(interopSheet);
                if (vstoSheet.Controls.Count > 0)
                {
                    System.Windows.Forms.MessageBox.Show(
                        "The VSTO controls are not persisted when you"
                        + " save and close this workbook.",
                        "Controls Persistence",
                        System.Windows.Forms.MessageBoxButtons.OK,
                        System.Windows.Forms.MessageBoxIcon.Warning);
                    break;
                }
            }
        }
    }
}

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

ApplicationFactory インターフェイス

GetVstoObject オーバーロード

Microsoft.Office.Tools.Excel 名前空間

その他の技術情報

アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張

Getting Extended Objects from Native Office Objects in Document-Level Customizations