ApplicationFactory.HasVstoObject Método

Definição

Sobrecargas

HasVstoObject(_Workbook)

Retorna um valor que indica se há um item de host Workbook para o objeto de pasta de trabalho do Excel especificado.

HasVstoObject(_Worksheet)

Retorna um valor que indica se há um item de host Worksheet para o objeto de planilha do Excel especificado.

HasVstoObject(ListObject)

Retorna um valor que indica se há um ListObject para o objeto de lista nativa especificado.

HasVstoObject(_Workbook)

Retorna um valor que indica se há um item de host Workbook para o objeto de pasta de trabalho do Excel especificado.

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

Parâmetros

workbook
_Workbook

O objeto de pasta de trabalho nativo a ser testado. Embora esse parâmetro seja do tipo _Workbook, você normalmente passa um objeto Workbook para esse método.

Retornos

Boolean

true se houver um item de host Workbook para o objeto Workbook especificado; caso contrário, false.

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, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.

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

Comentários

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

Observação

O parâmetro workbook é do tipo Microsoft.Office.Interop.Excel._Workbook, que é a interface pai de Microsoft.Office.Interop.Excel.Workbook. Portanto, esse método pode aceitar objetos de ambos os tipos: Microsoft.Office.Interop.Excel._Workbook e Microsoft.Office.Interop.Excel.Workbook . Normalmente, ao referenciar uma pasta de trabalho do Excel, você usa um Microsoft.Office.Interop.Excel.Workbook.

Aplica-se a

HasVstoObject(_Worksheet)

Retorna um valor que indica se há um item de host Worksheet para o objeto de planilha do Excel especificado.

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

Parâmetros

worksheet
_Worksheet

O objeto de planilha nativo a ser testado. Embora esse parâmetro seja do tipo _Worksheet, você normalmente passa um objeto Worksheet para esse método.

Retornos

Boolean

true se houver um item de host Worksheet para o objeto Worksheet especificado; caso contrário, false.

Exemplos

O exemplo de código a seguir verifica se as planilhas na pasta de trabalho atual têm um item de host associado. Para usar esse código, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.

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

Comentários

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

Observação

O parâmetro worksheet é do tipo Microsoft.Office.Interop.Excel._Worksheet, que é a interface pai de Microsoft.Office.Interop.Excel.Worksheet. Portanto, esse método pode aceitar objetos de ambos os tipos: Microsoft.Office.Interop.Excel._Worksheet e Microsoft.Office.Interop.Excel.Worksheet . Normalmente, ao referenciar uma planilha do Excel, você usa um Microsoft.Office.Interop.Excel.Worksheet.

Aplica-se a

HasVstoObject(ListObject)

Retorna um valor que indica se há um ListObject para o objeto de lista nativa especificado.

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

Parâmetros

listObject
ListObject

O objeto de lista do Excel nativo a ser testado.

Retornos

Boolean

true se houver um ListObject para o objeto ListObject especificado; caso contrário, false.

Exemplos

O exemplo de código a seguir verifica cada objeto de lista nativa em uma planilha para determinar se o objeto de lista tem um item de host associado. Para usar esse código, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.

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

Aplica-se a