ApplicationFactory.HasVstoObject 方法 (_Workbook)
傳回值,這個值表示指定的 Excel 活頁簿物件是否有 Microsoft.Office.Tools.Excel.Workbook 主項目存在。
命名空間: Microsoft.Office.Tools.Excel
組件: Microsoft.Office.Tools.Excel (在 Microsoft.Office.Tools.Excel.dll 中)
語法
'宣告
Function HasVstoObject ( _
workbook As _Workbook _
) As Boolean
bool HasVstoObject(
_Workbook workbook
)
參數
- workbook
型別:Microsoft.Office.Interop.Excel._Workbook
要測試的原生活頁簿物件。雖然這個參數的型別為 Microsoft.Office.Interop.Excel._Workbook,您通常會傳遞 Microsoft.Office.Interop.Excel.Workbook 物件給這個方法。
傳回值
型別:System.Boolean
如果指定的 Microsoft.Office.Interop.Excel.Workbook 物件有 Microsoft.Office.Tools.Excel.Workbook 主項目存在,則為 true,否則為 false。
備註
您可以在應用程式層級增益集中呼叫這個方法,測試您要在關閉或儲存 Excel 活頁簿之前保存的 Managed 控制項是否存在。
注意事項 |
---|
workbook 參數的型別是 Microsoft.Office.Interop.Excel._Workbook,此為 Microsoft.Office.Interop.Excel.Workbook 的父介面。 因此,這個方法可以接受這兩種型別的物件:Microsoft.Office.Interop.Excel._Workbook 和 Microsoft.Office.Interop.Excel.Workbook。 通常在參考 Excel 活頁簿時,您會使用 Microsoft.Office.Interop.Excel.Workbook。 |
範例
下列程式碼範例會檢查目前的活頁簿是否有關聯的主項目。 若要使用這個程式碼,請在以 .NET Framework 4 為目標之 Excel 增益集專案的 ThisAddIn 類別中執行該程式碼。
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 安全性
- 完全信任立即呼叫者。這個成員無法供部分信任的程式碼使用。如需詳細資訊,請參閱從部分受信任程式碼使用程式庫。