Método ApplicationFactory.HasVstoObject (_Workbook)
Retorna um valor que indica se um Microsoft.Office.Tools.Excel.Workbook o item de host existe para o objeto da pasta de trabalho especificado do Excel.
Namespace: Microsoft.Office.Tools.Excel
Assembly: Microsoft.Office.Tools.Excel (em Microsoft.Office.Tools.Excel.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 de pasta de trabalho nativa para testar.Embora esse parâmetro é do tipo Microsoft.Office.Interop.Excel._Workbook, você normalmente passar um Microsoft.Office.Interop.Excel.Workbook o objeto a este método.
Valor de retorno
Tipo: System.Boolean
true Se um Microsoft.Office.Tools.Excel.Workbook o item de host existe especificado Microsoft.Office.Interop.Excel.Workbook objeto; Caso contrário, false.
Comentários
Você pode chamar esse método em um suplemento do nível do aplicativo para testar a existência de controles gerenciados que você deseja manter antes de fechar ou salvar a pasta de trabalho do Excel.
Observação |
---|
O workbook parâmetro é do tipo Microsoft.Office.Interop.Excel._Workbook, que é a interface do pai do Microsoft.Office.Interop.Excel.Workbook. Portanto, esse método pode aceitar objetos dos dois tipos: Microsoft.Office.Interop.Excel._Workbook and Microsoft.Office.Interop.Excel.Workbook. Normalmente, quando você faz referência a uma pasta de trabalho do Excel, você usa um Microsoft.Office.Interop.Excel.Workbook. |
Exemplos
O exemplo de código a seguir verifica se a pasta de trabalho atual tem um item de host associado. Para usar esse código, executá-lo na ThisAddIn que os destinos do projeto de classe em um suplemento do Excel a .NET Framework 4.
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áveis.