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
)
パラメーター
- worksheet
型 : Microsoft.Office.Interop.Excel._Worksheet
拡張されたオブジェクトを取得する、ネイティブなワークシート オブジェクトです。このパラメーターは Microsoft.Office.Interop.Excel._Worksheet 型ですが、通常、このメソッドには Microsoft.Office.Interop.Excel.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._Worksheet と Microsoft.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 セキュリティ
- 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。
参照
関連項目
Microsoft.Office.Tools.Excel 名前空間
その他の技術情報
アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張
Getting Extended Objects from Native Office Objects in Document-Level Customizations