Share via


ApplicationFactory.HasVstoObject, méthode (_Workbook)

Retourne une valeur qui indique si un élément hôte Microsoft.Office.Tools.Excel.Workbook existe pour l'objet de classeur 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 ( _
    workbook As _Workbook _
) As Boolean
bool HasVstoObject(
    _Workbook workbook
)

Paramètres

Valeur de retour

Type : System.Boolean
true si un élément hôte Microsoft.Office.Tools.Excel.Workbook existe pour l'objet Microsoft.Office.Interop.Excel.Workbook 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 le classeur Excel.

Notes

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

Exemples

L'exemple de code suivant vérifie si le classeur actuel a 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