Freigeben über


ApplicationFactory.HasVstoObject-Methode (_Worksheet)

Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsblattobjekt ein Microsoft.Office.Tools.Excel.Worksheet-Hostelement vorhanden ist.

Namespace:  Microsoft.Office.Tools.Excel
Assemblys:   Microsoft.Office.Tools.Excel (in Microsoft.Office.Tools.Excel.dll)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (in Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)

Syntax

'Declaration
Function HasVstoObject ( _
    worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
    _Worksheet worksheet
)

Parameter

Rückgabewert

Typ: System.Boolean
true, wenn für das angegebene Microsoft.Office.Interop.Excel.Worksheet-Objekt ein Microsoft.Office.Tools.Excel.Worksheet-Hostelement vorhanden ist, andernfalls false.

Hinweise

Sie können diese Methode in einem Add-In auf Anwendungsebene aufrufen, um zu überprüfen, ob verwaltete Steuerelemente vorhanden sind, die beibehalten werden sollen, bevor Sie das Excel-Arbeitsblatt schließen oder speichern.

Hinweis

Der worksheet-Parameter ist vom Typ Microsoft.Office.Interop.Excel._Worksheet. Bei diesem handelt es sich um die übergeordnete Schnittstelle von Microsoft.Office.Interop.Excel.Worksheet.Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Worksheet und Microsoft.Office.Interop.Excel.Worksheet.Normalerweise wird ein Microsoft.Office.Interop.Excel.Worksheet verwendet, um auf ein Excel-Arbeitsblatt zu verweisen.

Beispiele

Im folgenden Codebeispiel wird geprüft, ob Arbeitsblätter in der aktuellen Arbeitsmappe über ein zugeordnetes Hostelement verfügen. Wenn Sie diesen Code verwenden möchten, führen Sie ihn von der ThisAddIn-Klasse in einem Excel-Add-In-Projekt aus, dessen Ziel .NET Framework 4 oder .NET Framework 4.5 ist.

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-Sicherheit

Siehe auch

Referenz

ApplicationFactory Schnittstelle

HasVstoObject-Überladung

Microsoft.Office.Tools.Excel-Namespace