ApplicationFactory.HasVstoObject (Método) (_Workbook)
Devuelve un valor que indica si existe un elemento host Microsoft.Office.Tools.Excel.Workbook para el objeto de libro de Excel especificado.
Espacio de nombres: Microsoft.Office.Tools.Excel
Ensamblados: Microsoft.Office.Tools.Excel (en Microsoft.Office.Tools.Excel.dll)
Microsoft.Office.Tools.Excel.v4.0.Utilities (en Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)
Sintaxis
'Declaración
Function HasVstoObject ( _
workbook As _Workbook _
) As Boolean
bool HasVstoObject(
_Workbook workbook
)
Parámetros
- workbook
Tipo: Microsoft.Office.Interop.Excel._Workbook
Objeto de libro nativo que se va a comprobar.Aunque este parámetro es de tipo Microsoft.Office.Interop.Excel._Workbook, normalmente se pasa un objeto Microsoft.Office.Interop.Excel.Workbook a este método.
Valor devuelto
Tipo: System.Boolean
Es true si existe un elemento host Microsoft.Office.Tools.Excel.Workbook para el objeto Microsoft.Office.Interop.Excel.Workbook especificado; de lo contrario, es false.
Comentarios
Puede llamar a este método en un complemento en el nivel de la aplicación para comprobar la existencia de controles administrados que desea conservar antes de cerrar o guardar el libro de Excel.
[!NOTA]
El parámetro workbook es de tipo Microsoft.Office.Interop.Excel._Workbook, que es la interfaz primaria de Microsoft.Office.Interop.Excel.Workbook.Por consiguiente, este método puede aceptar objetos de ambos tipos: Microsoft.Office.Interop.Excel._Workbook y Microsoft.Office.Interop.Excel.Workbook.Normalmente, al hacer referencia a un libro de Excel, se usa un Microsoft.Office.Interop.Excel.Workbook.
Ejemplos
En el ejemplo de código siguiente se comprueba si el libro activo tiene un elemento host asociado.Para utilizar este código, ejecútelo desde la clase de ThisAddIn en un proyecto de complemento de Excel destinado a .NET Framework 4 o .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;
}
}
}
}
}
Seguridad de .NET Framework
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.