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
- workbook
Tipo: Microsoft.Office.Interop.Excel._Workbook
Oggetto cartella di lavoro nativo da testare.Sebbene questo parametro sia di tipo Microsoft.Office.Interop.Excel._Workbook, a questo metodo viene in genere passato un oggetto Microsoft.Office.Interop.Excel.Workbook.
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
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.