Share via


ApplicationFactory.HasVstoObject, méthode (_Worksheet)

Retourne une valeur qui indique si un élément hôte Microsoft.Office.Tools.Excel.Worksheet existe pour l'objet de feuille de calcul Excel spécifié.

Espace de noms :  Microsoft.Office.Tools.Excel
Assemblys :   Microsoft.Office.Tools.Excel (dans Microsoft.Office.Tools.Excel.dll)
  Microsoft.Office.Tools.Excel.v4.0.Utilities (dans Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)

Syntaxe

'Déclaration
Function HasVstoObject ( _
    worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
    _Worksheet worksheet
)

Paramètres

Valeur de retour

Type : System.Boolean
true si un élément hôte Microsoft.Office.Tools.Excel.Worksheet existe pour l'objet Microsoft.Office.Interop.Excel.Worksheet spécifié ; sinon, false.

Notes

Vous pouvez appeler cette méthode dans un complément d'application pour tester l'existence de contrôles managés que vous souhaitez rendre persistant avant de fermer ou d'enregistrer la feuille de calcul Excel.

Notes

Le paramètre worksheet est de type Microsoft.Office.Interop.Excel._Worksheet, qui correspond à l'interface parente de Microsoft.Office.Interop.Excel.Worksheet.Par conséquent, cette méthode peut accepter des objets de deux types: Microsoft.Office.Interop.Excel._Worksheet et Microsoft.Office.Interop.Excel.Worksheet.En général, lorsque vous référencez une feuille de calcul Excel, vous utilisez Microsoft.Office.Interop.Excel.Worksheet.

Exemples

L'exemple de code suivant vérifie si les feuilles de calcul dans le classeur actuel ont un élément hôte associé. Pour utiliser ce code, exécutez-le depuis la classe ThisAddIn dans un projet de complément Excel qui cible le .NET Framework 4 ou le .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;
                }
            }
        }
    }
}

Sécurité .NET Framework

Voir aussi

Référence

ApplicationFactory Interface

HasVstoObject, surcharge

Microsoft.Office.Tools.Excel, espace de noms