Metoda ApplicationFactory.HasVstoObject — (_Workbook)
Zwraca wartość, która wskazuje, czy Microsoft.Office.Tools.Excel.Workbook istnieje element hosta dla określonego obiektu skoroszytu programu Excel.
Przestrzeń nazw: Microsoft.Office.Tools.Excel
Zestawy: Microsoft.Office.Tools.Excel (w Microsoft.Office.Tools.Excel.dll)
Microsoft.Office.Tools.Excel.v4.0.Utilities (w Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)
Składnia
'Deklaracja
Function HasVstoObject ( _
workbook As _Workbook _
) As Boolean
bool HasVstoObject(
_Workbook workbook
)
Parametry
- workbook
Typ: Microsoft.Office.Interop.Excel._Workbook
Obiekt macierzystego skoroszytu do testowania.Ten parametr jest typu Microsoft.Office.Interop.Excel._Workbook, zazwyczaj przekazać Microsoft.Office.Interop.Excel.Workbook obiektu do tej metody.
Wartość zwracana
Typ: System.Boolean
true Jeśli Microsoft.Office.Tools.Excel.Workbook istnieje element hosta dla określonego Microsoft.Office.Interop.Excel.Workbook zgłasza zastrzeżeń; w przeciwnym razie false.
Uwagi
Tę metodę można wywołać w poziomie aplikacji dodatek do sprawdzania istnienia zarządzane formanty, które chcesz utrwalić przed zamknięciem lub zapisanie skoroszytu programu Excel.
[!UWAGA]
workbook Parametr jest typu Microsoft.Office.Interop.Excel._Workbook, który jest interfejsem nadrzędnej Microsoft.Office.Interop.Excel.Workbook.W związku z tym, ta metoda może akceptować obiekty obu typów: Microsoft.Office.Interop.Excel._Workbook i Microsoft.Office.Interop.Excel.Workbook.Zazwyczaj, gdy odwołanie do skoroszytu programu Excel, możesz wykorzystać Microsoft.Office.Interop.Excel.Workbook.
Przykłady
Poniższy przykład kodu sprawdza, czy bieżący skoroszyt ma element skojarzony hosta.Aby użyć tego kodu, uruchomić go z ThisAddIn klasy w dodatek programu Excel projektu atakującego .NET Framework 4 lub .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;
}
}
}
}
}
Zabezpieczenia programu .NET Framework
- Pełne zaufanie do bezpośredniego wywołującego. Tego elementu członkowskiego nie można używać w kodzie częściowo zaufanym. Aby uzyskać więcej informacji, zobacz Przy użyciu bibliotek z częściowo zaufanego kodu..