ApplicationFactory.HasVstoObject Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
| HasVstoObject(_Workbook) |
Retorna um valor que indica se há um item de host Workbook para o objeto de pasta de trabalho do Excel especificado. |
| HasVstoObject(_Worksheet) |
Retorna um valor que indica se há um item de host Worksheet para o objeto de planilha do Excel especificado. |
| HasVstoObject(ListObject) |
Retorna um valor que indica se há um ListObject para o objeto de lista nativa especificado. |
HasVstoObject(_Workbook)
Retorna um valor que indica se há um item de host Workbook para o objeto de pasta de trabalho do Excel especificado.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Workbook workbook);
Parâmetros
- workbook
- _Workbook
O objeto de pasta de trabalho nativo a ser testado. Embora esse parâmetro seja do tipo _Workbook, você normalmente passa um objeto Workbook para esse método.
Retornos
true se houver um item de host Workbook para o objeto Workbook especificado; caso contrário, false.
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, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.
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
Comentários
Você pode chamar esse método em um suplemento de nível de aplicativo para testar a existência de controles gerenciados que deseja persistir antes de fechar ou salvar a pasta de trabalho do Excel.
Observação
O parâmetro 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 ambos os tipos: Microsoft.Office.Interop.Excel._Workbook e Microsoft.Office.Interop.Excel.Workbook . Normalmente, ao referenciar uma pasta de trabalho do Excel, você usa um Microsoft.Office.Interop.Excel.Workbook.
Aplica-se a
HasVstoObject(_Worksheet)
Retorna um valor que indica se há um item de host Worksheet para o objeto de planilha do Excel especificado.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Worksheet worksheet);
Parâmetros
- worksheet
- _Worksheet
O objeto de planilha nativo a ser testado. Embora esse parâmetro seja do tipo _Worksheet, você normalmente passa um objeto Worksheet para esse método.
Retornos
true se houver um item de host Worksheet para o objeto Worksheet especificado; caso contrário, false.
Exemplos
O exemplo de código a seguir verifica se as planilhas na pasta de trabalho atual têm um item de host associado. Para usar esse código, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.
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
Comentários
Você pode chamar esse método em um suplemento de nível de aplicativo para testar a existência de controles gerenciados que deseja persistir antes de fechar ou salvar a planilha do Excel.
Observação
O parâmetro worksheet é do tipo Microsoft.Office.Interop.Excel._Worksheet, que é a interface pai de Microsoft.Office.Interop.Excel.Worksheet. Portanto, esse método pode aceitar objetos de ambos os tipos: Microsoft.Office.Interop.Excel._Worksheet e Microsoft.Office.Interop.Excel.Worksheet . Normalmente, ao referenciar uma planilha do Excel, você usa um Microsoft.Office.Interop.Excel.Worksheet.
Aplica-se a
HasVstoObject(ListObject)
Retorna um valor que indica se há um ListObject para o objeto de lista nativa especificado.
public bool HasVstoObject (Microsoft.Office.Interop.Excel.ListObject listObject);
Parâmetros
- listObject
- ListObject
O objeto de lista do Excel nativo a ser testado.
Retornos
true se houver um ListObject para o objeto ListObject especificado; caso contrário, false.
Exemplos
O exemplo de código a seguir verifica cada objeto de lista nativa em uma planilha para determinar se o objeto de lista tem um item de host associado. Para usar esse código, execute-o na classe ThisAddIn em um projeto de suplemento do Excel que segmenta .NET Framework 4 ou .NET Framework 4.5.
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