Método ApplicationFactory.HasVstoObject (_Workbook)
Retorna um valor que indica se um item de host de Microsoft.Office.Tools.Excel.Workbook existir para o objeto especificado de pasta de trabalho do Excel.
Namespace: Microsoft.Office.Tools.Excel
Assemblies: Microsoft.Office.Tools.Excel (em Microsoft.Office.Tools.Excel.dll)
Microsoft.Office.Tools.Excel.v4.0.Utilities (em Microsoft.Office.Tools.Excel.v4.0.Utilities.dll)
Sintaxe
'Declaração
Function HasVstoObject ( _
workbook As _Workbook _
) As Boolean
bool HasVstoObject(
_Workbook workbook
)
Parâmetros
- workbook
Tipo: Microsoft.Office.Interop.Excel._Workbook
O objeto nativo de pasta de trabalho para teste.Embora esse parâmetro é do tipo Microsoft.Office.Interop.Excel._Workbook, você normalmente passa um objeto de Microsoft.Office.Interop.Excel.Workbook para este método.
Valor de retorno
Tipo: System.Boolean
true se um item de host de Microsoft.Office.Tools.Excel.Workbook existir para o objeto especificado de Microsoft.Office.Interop.Excel.Workbook ; caso contrário, false.
Comentários
Você pode chamar este método em um suplemento ao nível para testar a existência dos controles gerenciados que você deseja persistir antes de fechar ou de salvar a pasta de trabalho do Excel.
Dica
O parâmetro de workbook é do tipo Microsoft.Office.Interop.Excel._Workbook, que é a interface pai de Microsoft.Office.Interop.Excel.Workbook.Portanto, esse método pode aceitar objetos de dois tipos: Microsoft.Office.Interop.Excel._Workbook e Microsoft.Office.Interop.Excel.Workbook.Normalmente, quando você referencia uma pasta de trabalho do Excel, você usa Microsoft.Office.Interop.Excel.Workbook.
Exemplos
O exemplo de código verifica se a pasta de trabalho atual possui um item associado host. Para usar este código, ele execução da classe de ThisAddIn em um projeto do suplemento do excel que tem como alvo .NET Framework 4 ou .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;
}
}
}
}
}
Segurança do .NET Framework
- Confiança total para o chamador imediato. O membro não pode ser usado por código parcialmente confiável. Para obter mais informações, consulte Usando bibliotecas de código parcialmente confiável.