Condividi tramite


Metodo ApplicationFactory.HasVstoObject (_Worksheet)

Restituisce un valore che indica se esiste un elemento host Microsoft.Office.Tools.Excel.Worksheet per l'oggetto foglio 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 ( _
    worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
    _Worksheet worksheet
)

Parametri

Valore restituito

Tipo: System.Boolean
true se esiste un elemento host Microsoft.Office.Tools.Excel.Worksheet per l'oggetto Microsoft.Office.Interop.Excel.Worksheet 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 il foglio di lavoro di Excel.

Nota

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

Esempi

Nell'esempio di codice riportato di seguito viene controllato se i fogli di lavoro nella cartella di lavoro corrente presentano 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