共用方式為


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
可擴充原生工作表物件功能的主項目。

備註

在應用程式層級增益集 (Add-In) 內呼叫這個方法,即可自訂任何以 Excel 開啟的工作表。 如果之前沒有產生任何 Microsoft.Office.Tools.Excel.Worksheet 物件,這個方法會產生此一新物件。 對這個方法的後續呼叫會傳回現有 Microsoft.Office.Tools.Excel.Worksheet 物件的快取執行個體 (Instance)。 如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 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 主項目。 若要使用這個程式碼,請在以 .NET Framework 4 或 .NET Framework 4.5 為目標之 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 安全性

請參閱

參考

ApplicationFactory 介面

GetVstoObject 多載

Microsoft.Office.Tools.Excel 命名空間

其他資源

在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

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