ApplicationFactory.HasVstoObject Methode

Definition

Überlädt

HasVstoObject(_Workbook)

Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsmappenobjekt ein Workbook-Hostelement vorhanden ist.

HasVstoObject(_Worksheet)

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

HasVstoObject(ListObject)

Gibt einen Wert zurück, der angibt, ob für das angegebene systemeigene Listenobjekt ein ListObject vorhanden ist.

HasVstoObject(_Workbook)

Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsmappenobjekt ein Workbook-Hostelement vorhanden ist.

public bool HasVstoObject (Microsoft.Office.Interop.Excel._Workbook workbook);

Parameter

workbook
_Workbook

Das zu testende native Arbeitsmappenobjekt. Obwohl dieser Parameter vom Typ _Workbook ist, übergeben Sie normalerweise ein Workbook-Objekt an diese Methode.

Gibt zurück

Boolean

true, wenn für das angegebene Workbook-Objekt ein Workbook-Hostelement vorhanden ist, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird überprüft, ob der aktuellen Arbeitsmappe ein-Host Element zugeordnet ist. 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.

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;
                }
            }
        }
    }
}
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

Hinweise

Sie können diese Methode in einem Add-in auf Anwendungsebene aufzurufen, um zu testen, ob verwaltete Steuerelemente vorhanden sind, die Sie beibehalten möchten, bevor Sie die Excel-Arbeitsmappe schließen oder speichern.

Hinweis

Der- workbook Parameter ist vom Typ Microsoft.Office.Interop.Excel._Workbook , der die übergeordnete Schnittstelle von ist Microsoft.Office.Interop.Excel.Workbook . Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Workbook und Microsoft.Office.Interop.Excel.Workbook . Wenn Sie auf eine Excel-Arbeitsmappe verweisen, verwenden Sie in der Regel ein Microsoft.Office.Interop.Excel.Workbook .

Gilt für

HasVstoObject(_Worksheet)

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

public bool HasVstoObject (Microsoft.Office.Interop.Excel._Worksheet worksheet);

Parameter

worksheet
_Worksheet

Das zu testende native Arbeitsblattobjekt. Obwohl dieser Parameter vom Typ _Worksheet ist, übergeben Sie normalerweise ein Worksheet-Objekt an diese Methode.

Gibt zurück

Boolean

true, wenn für das angegebene Worksheet-Objekt ein Worksheet-Hostelement vorhanden ist, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird überprüft, ob Arbeitsblätter in der aktuellen Arbeitsmappe über ein zugeordnetes Host Element 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.

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;
                }
            }
        }
    }
}
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

Hinweise

Sie können diese Methode in einem Add-in auf Anwendungsebene abrufen, um zu testen, ob verwaltete Steuerelemente vorhanden sind, die Sie beibehalten möchten, bevor Sie das Excel-Arbeitsblatt schließen oder speichern.

Hinweis

Der- worksheet Parameter ist vom Typ Microsoft.Office.Interop.Excel._Worksheet , der die übergeordnete Schnittstelle von ist Microsoft.Office.Interop.Excel.Worksheet . Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Worksheet und Microsoft.Office.Interop.Excel.Worksheet . Wenn Sie auf ein Excel-Arbeitsblatt verweisen, verwenden Sie in der Regel ein Microsoft.Office.Interop.Excel.Worksheet .

Gilt für

HasVstoObject(ListObject)

Gibt einen Wert zurück, der angibt, ob für das angegebene systemeigene Listenobjekt ein ListObject vorhanden ist.

public bool HasVstoObject (Microsoft.Office.Interop.Excel.ListObject listObject);

Parameter

listObject
ListObject

Das zu testende systemeigene Excel-Listenobjekt.

Gibt zurück

Boolean

true, wenn für das angegebene ListObject-Objekt ein ListObject-Objekt vorhanden ist, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird jedes systemeigene Listen Objekt in einem Arbeitsblatt überprüft, um zu bestimmen, ob das Listen Objekt über ein zugeordnetes Host Element verfügt. 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.

Excel.Worksheet mySheet = (Excel.Worksheet)
    this.Application.Worksheets["Sheet1"];
if (mySheet.ListObjects.Count > 0)
{
    foreach (Excel.ListObject list in mySheet.ListObjects)
    {
        if (Globals.Factory.HasVstoObject(list) == true)
        {
            System.Windows.Forms.MessageBox.Show(
                "The VSTO properties of list objects are not "
                + "persisted when you save and close this workbook.",
                "VSTO ListObject",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
            break;
        }
    }
}
Dim mySheet As Excel.Worksheet = Me.Application.ActiveSheet
If mySheet.ListObjects.Count > 0 Then
    For Each list As Excel.ListObject In mySheet.ListObjects
        If Globals.Factory.HasVstoObject(list) = True Then
            System.Windows.Forms.MessageBox.Show( _
                "The VSTO properties of list objects are not " _
                + "persisted when you save and close this workbook.", _
                "VSTO ListObject", _
                System.Windows.Forms.MessageBoxButtons.OK, _
                System.Windows.Forms.MessageBoxIcon.Warning)
            Exit For
        End If
    Next
End If

Gilt für