ApplicationFactory.HasVstoObject-Methode (_Worksheet)
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsblattobjekt ein Microsoft.Office.Tools.Excel.Worksheet-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 ( _
worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
_Worksheet worksheet
)
Parameter
- worksheet
Typ: Microsoft.Office.Interop.Excel._Worksheet
Das zu testende systemeigene Arbeitsblattobjekt.Obwohl dieser Parameter vom Typ Microsoft.Office.Interop.Excel._Worksheet ist, übergeben Sie i. d. R. ein Microsoft.Office.Interop.Excel.Worksheet-Objekt an diese Methode.
Rückgabewert
Typ: System.Boolean
true, wenn für das angegebene Microsoft.Office.Interop.Excel.Worksheet-Objekt ein Microsoft.Office.Tools.Excel.Worksheet-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 das Excel-Arbeitsblatt schließen oder speichern.
Hinweis
Der worksheet-Parameter ist vom Typ Microsoft.Office.Interop.Excel._Worksheet. Bei diesem handelt es sich um die übergeordnete Schnittstelle von Microsoft.Office.Interop.Excel.Worksheet.Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Worksheet und Microsoft.Office.Interop.Excel.Worksheet.Normalerweise wird ein Microsoft.Office.Interop.Excel.Worksheet verwendet, um auf ein Excel-Arbeitsblatt zu verweisen.
Beispiele
Im folgenden Codebeispiel wird geprüft, ob Arbeitsblätter in der aktuellen Arbeitsmappe über ein zugeordnetes Hostelement verfügen. 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.