Condividi tramite


Metodo ApplicationFactory.HasVstoObject (_Workbook)

Restituisce un valore che indica se esiste un elemento host Microsoft.Office.Tools.Excel.Workbook per l'oggetto cartella di lavoro di Excel specificato.

Spazio dei nomi:  Microsoft.Office.Tools.Excel
Assembly:   Microsoft.Office.Tools.Excel (in Microsoft.Office.Tools.Excel.dll)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (in Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)

Sintassi

'Dichiarazione
Function HasVstoObject ( _
    workbook As _Workbook _
) As Boolean
bool HasVstoObject(
    _Workbook workbook
)

Parametri

Valore restituito

Tipo: System.Boolean
true se esiste un elemento host Microsoft.Office.Tools.Excel.Workbook per l'oggetto Microsoft.Office.Interop.Excel.Workbook specificato; in caso contrario, false.

Note

È possibile chiamare questo metodo in un componente aggiuntivo a livello di applicazione per verificare l'esistenza di controlli gestiti che si desidera salvare in modo permanente prima di chiudere o salvare la cartella di lavoro di Excel.

Nota

Il parametro workbook è di tipo Microsoft.Office.Interop.Excel._Workbook, che è l'interfaccia padre di Microsoft.Office.Interop.Excel.Workbook.Pertanto, questo metodo può accettare oggetti di entrambi i tipi: Microsoft.Office.Interop.Excel._Workbook e Microsoft.Office.Interop.Excel.Workbook.In genere, quando si fa riferimento a una cartella di lavoro di Excel, si utilizza un oggetto Microsoft.Office.Interop.Excel.Workbook.

Esempi

Nell'esempio di codice riportato di seguito viene controllato se la cartella di lavoro corrente dispone di un elemento host associato. Per utilizzare questo codice, eseguirlo dalla classe ThisAddIn in un progetto di componente aggiuntivo di Excel destinato 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;
                }
            }
        }
    }
}

Sicurezza di .NET Framework

Vedere anche

Riferimenti

ApplicationFactory Interfaccia

Overload HasVstoObject

Spazio dei nomi Microsoft.Office.Tools.Excel