Compartir a través de


ApplicationFactory.HasVstoObject (Método) (_Worksheet)

Devuelve un valor que indica si existe un elemento host Microsoft.Office.Tools.Excel.Worksheet para el objeto de hoja de cálculo de Excel especificado.

Espacio de nombres:  Microsoft.Office.Tools.Excel
Ensamblados:   Microsoft.Office.Tools.Excel (en Microsoft.Office.Tools.Excel.dll)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (en Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)

Sintaxis

'Declaración
Function HasVstoObject ( _
    worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
    _Worksheet worksheet
)

Parámetros

Valor devuelto

Tipo: System.Boolean
Es true si existe un elemento host Microsoft.Office.Tools.Excel.Worksheet para el objeto Microsoft.Office.Interop.Excel.Worksheet especificado; de lo contrario, es false.

Comentarios

Puede llamar a este método en un complemento en el nivel de la aplicación para comprobar la existencia de controles administrados que desea conservar antes de cerrar o guardar la hoja de cálculo de Excel.

[!NOTA]

El parámetro worksheet es de tipo Microsoft.Office.Interop.Excel._Worksheet, que es la interfaz primaria de Microsoft.Office.Interop.Excel.Worksheet.Por consiguiente, este método puede aceptar objetos de ambos tipos: Microsoft.Office.Interop.Excel._Worksheet y Microsoft.Office.Interop.Excel.Worksheet.Normalmente, al hacer referencia a una hoja de cálculo de Excel, se usa un Microsoft.Office.Interop.Excel.Worksheet.

Ejemplos

En el ejemplo de código siguiente se comprueba si las hojas de cálculo en el libro activo tienen un elemento host asociado.Para utilizar este código, ejecútelo desde la clase de ThisAddIn en un proyecto de complemento de Excel destinado a .NET Framework 4 o .NET Framework 4.5.

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

Seguridad de .NET Framework

Vea también

Referencia

ApplicationFactory Interfaz

HasVstoObject (Sobrecarga)

Microsoft.Office.Tools.Excel (Espacio de nombres)