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)
'Declaration
Function HasVstoObject ( _
worksheet As _Worksheet _
) As Boolean
bool HasVstoObject(
_Worksheet worksheet
)
- 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.
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.
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. |
Im folgenden Codebeispiel wird geprüft, ob Arbeitsblätter in der aktuellen Arbeitsmappe über ein zugeordnetes Hostelement verfügen.Um diesen Code auszuführen, führen Sie es von der - Klasse ThisAddIn in einem Excel-Add-In-Projekt abzielt .NET Framework 4 oder .NET Framework 4.5 verwenden.
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;
}
}
}
}
}
- 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.