ApplicationFactory.HasVstoObject Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| HasVstoObject(_Workbook) |
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsmappenobjekt ein Workbook-Hostelement vorhanden ist. |
| HasVstoObject(_Worksheet) |
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsblattobjekt ein Worksheet-Hostelement vorhanden ist. |
| HasVstoObject(ListObject) |
Gibt einen Wert zurück, der angibt, ob für das angegebene systemeigene Listenobjekt ein ListObject vorhanden ist. |
HasVstoObject(_Workbook)
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsmappenobjekt ein Workbook-Hostelement vorhanden ist.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Workbook workbook);
Parameter
- workbook
- _Workbook
Das zu testende native Arbeitsmappenobjekt. Obwohl dieser Parameter vom Typ _Workbook ist, übergeben Sie normalerweise ein Workbook-Objekt an diese Methode.
Gibt zurück
true, wenn für das angegebene Workbook-Objekt ein Workbook-Hostelement vorhanden ist, andernfalls false.
Beispiele
Im folgenden Codebeispiel wird überprüft, ob der aktuellen Arbeitsmappe ein-Host Element zugeordnet ist. 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.
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;
}
}
}
}
}
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
Hinweise
Sie können diese Methode in einem Add-in auf Anwendungsebene aufzurufen, um zu testen, ob verwaltete Steuerelemente vorhanden sind, die Sie beibehalten möchten, bevor Sie die Excel-Arbeitsmappe schließen oder speichern.
Hinweis
Der- workbook Parameter ist vom Typ Microsoft.Office.Interop.Excel._Workbook , der die übergeordnete Schnittstelle von ist Microsoft.Office.Interop.Excel.Workbook . Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Workbook und Microsoft.Office.Interop.Excel.Workbook . Wenn Sie auf eine Excel-Arbeitsmappe verweisen, verwenden Sie in der Regel ein Microsoft.Office.Interop.Excel.Workbook .
Gilt für
HasVstoObject(_Worksheet)
Gibt einen Wert zurück, der angibt, ob für das angegebene Excel-Arbeitsblattobjekt ein Worksheet-Hostelement vorhanden ist.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Worksheet worksheet);
Parameter
- worksheet
- _Worksheet
Das zu testende native Arbeitsblattobjekt. Obwohl dieser Parameter vom Typ _Worksheet ist, übergeben Sie normalerweise ein Worksheet-Objekt an diese Methode.
Gibt zurück
true, wenn für das angegebene Worksheet-Objekt ein Worksheet-Hostelement vorhanden ist, andernfalls false.
Beispiele
Im folgenden Codebeispiel wird überprüft, ob Arbeitsblätter in der aktuellen Arbeitsmappe über ein zugeordnetes Host Element 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.
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;
}
}
}
}
}
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
Hinweise
Sie können diese Methode in einem Add-in auf Anwendungsebene abrufen, um zu testen, ob verwaltete Steuerelemente vorhanden sind, die Sie beibehalten möchten, bevor Sie das Excel-Arbeitsblatt schließen oder speichern.
Hinweis
Der- worksheet Parameter ist vom Typ Microsoft.Office.Interop.Excel._Worksheet , der die übergeordnete Schnittstelle von ist Microsoft.Office.Interop.Excel.Worksheet . Daher kann diese Methode Objekte beider Typen akzeptieren: Microsoft.Office.Interop.Excel._Worksheet und Microsoft.Office.Interop.Excel.Worksheet . Wenn Sie auf ein Excel-Arbeitsblatt verweisen, verwenden Sie in der Regel ein Microsoft.Office.Interop.Excel.Worksheet .
Gilt für
HasVstoObject(ListObject)
Gibt einen Wert zurück, der angibt, ob für das angegebene systemeigene Listenobjekt ein ListObject vorhanden ist.
public bool HasVstoObject (Microsoft.Office.Interop.Excel.ListObject listObject);
Parameter
- listObject
- ListObject
Das zu testende systemeigene Excel-Listenobjekt.
Gibt zurück
true, wenn für das angegebene ListObject-Objekt ein ListObject-Objekt vorhanden ist, andernfalls false.
Beispiele
Im folgenden Codebeispiel wird jedes systemeigene Listen Objekt in einem Arbeitsblatt überprüft, um zu bestimmen, ob das Listen Objekt über ein zugeordnetes Host Element 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.
Excel.Worksheet mySheet = (Excel.Worksheet)
this.Application.Worksheets["Sheet1"];
if (mySheet.ListObjects.Count > 0)
{
foreach (Excel.ListObject list in mySheet.ListObjects)
{
if (Globals.Factory.HasVstoObject(list) == true)
{
System.Windows.Forms.MessageBox.Show(
"The VSTO properties of list objects are not "
+ "persisted when you save and close this workbook.",
"VSTO ListObject",
System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Warning);
break;
}
}
}
Dim mySheet As Excel.Worksheet = Me.Application.ActiveSheet
If mySheet.ListObjects.Count > 0 Then
For Each list As Excel.ListObject In mySheet.ListObjects
If Globals.Factory.HasVstoObject(list) = True Then
System.Windows.Forms.MessageBox.Show( _
"The VSTO properties of list objects are not " _
+ "persisted when you save and close this workbook.", _
"VSTO ListObject", _
System.Windows.Forms.MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Warning)
Exit For
End If
Next
End If