Compartilhar via


Método ApplicationFactory.HasVstoObject (_Worksheet)

Retorna um valor que indica se um item de host de Microsoft.Office.Tools.Excel.Worksheet existir para o objeto especificado da planilha do excel.

Namespace:  Microsoft.Office.Tools.Excel
Assemblies:   Microsoft.Office.Tools.Excel (em Microsoft.Office.Tools.Excel.dll)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (em Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)

Sintaxe

'Declaração
Function HasVstoObject ( _
    worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
    _Worksheet worksheet
)

Parâmetros

Valor de retorno

Tipo: System.Boolean
true se um item de host de Microsoft.Office.Tools.Excel.Worksheet existir para o objeto especificado de Microsoft.Office.Interop.Excel.Worksheet ; caso contrário, false.

Comentários

Você pode chamar esse método em um suplemento ao nível para testar a existência dos controles gerenciados que você deseja persistir antes de fechar ou de salvar a planilha do excel.

ObservaçãoObservação

O parâmetro de worksheet é do tipo Microsoft.Office.Interop.Excel._Worksheet, que é a interface pai de Microsoft.Office.Interop.Excel.Worksheet.Como consequência, esse método pode aceitar objetos de dois tipos: Microsoft.Office.Interop.Excel._Worksheet e Microsoft.Office.Interop.Excel.Worksheet.Normalmente, quando você referencia uma planilha do excel, você usa Microsoft.Office.Interop.Excel.Worksheet.

Exemplos

O exemplo de código verifica se as planilhas na pasta de trabalho atual tem um item associado host.Para usar este código, ele execução da classe de ThisAddIn em um projeto do suplemento do excel que tem como alvo .NET Framework 4 ou .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;
                }
            }
        }
    }
}

Segurança do .NET Framework

Consulte também

Referência

ApplicationFactory Interface

Sobrecargas HasVstoObject

Namespace Microsoft.Office.Tools.Excel