ApplicationFactory.HasVstoObject-Methode (_Workbook)
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsmappenobjekt ein Microsoft.Office.Tools.Excel.Workbook-Hostelement vorhanden ist.
Namespace: Microsoft.Office.Tools.Excel
Assemblys: 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)
Syntax
'Declaration
Function HasVstoObject ( _
workbook As _Workbook _
) As Boolean
bool HasVstoObject(
_Workbook workbook
)
Parameter
- workbook
Typ: Microsoft.Office.Interop.Excel._Workbook
Das zu testende systemeigene Arbeitsmappenobjekt.Obwohl dieser Parameter vom Typ Microsoft.Office.Interop.Excel._Workbook ist, übergeben Sie i. d. R. ein Microsoft.Office.Interop.Excel.Workbook-Objekt an diese Methode.
Rückgabewert
Typ: System.Boolean
true, wenn für das angegebene Microsoft.Office.Interop.Excel.Workbook-Objekt ein Microsoft.Office.Tools.Excel.Workbook-Hostelement vorhanden ist, andernfalls false.
Hinweise
Sie können diese Methode in einem Add-In auf Anwendungsebene aufrufen, um zu überprüfen, ob verwaltete Steuerelemente vorhanden sind, die beibehalten werden sollen, bevor Sie die Excel-Arbeitsmappe schließen oder speichern.
Hinweis
Der workbook-Parameter ist vom Typ Microsoft.Office.Interop.Excel._Workbook, bei dem es sich um die übergeordnete Schnittstelle von Microsoft.Office.Interop.Excel.Workbook handelt.Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Workbook und Microsoft.Office.Interop.Excel.Workbook.Normalerweise verwenden Sie eine Microsoft.Office.Interop.Excel.Workbook, um auf eine Excel-Arbeitsmappe zu verweisen.
Beispiele
Im folgenden Codebeispiel wird geprüft, ob die aktuelle Arbeitsmappe über ein zugeordnetes Hostelement verfügt. Wenn Sie diesen Code verwenden möchten, führen Sie ihn von der ThisAddIn-Klasse in einem Excel-Add-In-Projekt aus, dessen Ziel .NET Framework 4 oder .NET Framework 4.5 ist.
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;
}
}
}
}
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.