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
- workbook
Type : Microsoft.Office.Interop.Excel._Workbook
Objet de classeur natif à tester.Bien que ce paramètre soit de type Microsoft.Office.Interop.Excel._Workbook, vous passez généralement un objet Microsoft.Office.Interop.Excel.Workbook à cette méthode.
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
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.