Compartilhar via


Método ApplicationFactory.HasVstoObject (_Workbook)

Retorna um valor que indica se um Microsoft.Office.Tools.Excel.Workbook o item de host existe para o objeto da pasta de trabalho especificado do Excel.

Namespace:  Microsoft.Office.Tools.Excel
Assembly:  Microsoft.Office.Tools.Excel (em Microsoft.Office.Tools.Excel.dll)

Sintaxe

'Declaração
Function HasVstoObject ( _
    workbook As _Workbook _
) As Boolean
bool HasVstoObject(
    _Workbook workbook
)

Parâmetros

Valor de retorno

Tipo: System.Boolean
true Se um Microsoft.Office.Tools.Excel.Workbook o item de host existe especificado Microsoft.Office.Interop.Excel.Workbook objeto; Caso contrário, false.

Comentários

Você pode chamar esse método em um suplemento do nível do aplicativo para testar a existência de controles gerenciados que você deseja manter antes de fechar ou salvar a pasta de trabalho do Excel.

ObservaçãoObservação

O workbook parâmetro é do tipo Microsoft.Office.Interop.Excel._Workbook, que é a interface do pai do Microsoft.Office.Interop.Excel.Workbook. Portanto, esse método pode aceitar objetos dos dois tipos: Microsoft.Office.Interop.Excel._Workbook and Microsoft.Office.Interop.Excel.Workbook. Normalmente, quando você faz referência a uma pasta de trabalho do Excel, você usa um Microsoft.Office.Interop.Excel.Workbook.

Exemplos

O exemplo de código a seguir verifica se a pasta de trabalho atual tem um item de host associado. Para usar esse código, executá-lo na ThisAddIn que os destinos do projeto de classe em um suplemento do Excel a .NET Framework 4.

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