ApplicationFactory.HasVstoObject Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| HasVstoObject(_Workbook) |
Возвращает значение, указывающее существует ли ведущий элемент Workbook для заданного объекта книги Excel. |
| HasVstoObject(_Worksheet) |
Возвращает значение, указывающее существует ли ведущий элемент Worksheet для заданного объекта листа Excel. |
| HasVstoObject(ListObject) |
Возвращает значение, указывающее существует ли ведущий элемент ListObject для заданного собственного объекта списка. |
HasVstoObject(_Workbook)
Возвращает значение, указывающее существует ли ведущий элемент Workbook для заданного объекта книги Excel.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Workbook workbook);
Параметры
- workbook
- _Workbook
Собственный объект книги для проверки. Несмотря на то что этот параметр имеет тип _Workbook, как правило, в этот метод передается объект Workbook.
Возвращаемое значение
Значение true, если для заданного объекта Workbook существует ведущий элемент Workbook; в противном случае — значение false.
Примеры
В следующем примере кода проверяется наличие у текущей книги связанного ведущего элемента. Чтобы воспользоваться этим кодом, запустите его из класса ThisAddIn в проекте надстройки Excel, ориентированном на .NET Framework 4 или .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
Комментарии
Этот метод можно вызвать в надстройке уровня приложения для проверки существования управляемых элементов управления, которые необходимо сохранить перед закрытием или сохранением книги Excel.
Примечание
workbookПараметр имеет тип Microsoft.Office.Interop.Excel._Workbook , который является родительским интерфейсом Microsoft.Office.Interop.Excel.Workbook . Поэтому этот метод может принимать объекты обоих типов: Microsoft.Office.Interop.Excel._Workbook и Microsoft.Office.Interop.Excel.Workbook . Как правило, при ссылке на книгу Excel используется Microsoft.Office.Interop.Excel.Workbook .
Применяется к
HasVstoObject(_Worksheet)
Возвращает значение, указывающее существует ли ведущий элемент Worksheet для заданного объекта листа Excel.
public bool HasVstoObject (Microsoft.Office.Interop.Excel._Worksheet worksheet);
Параметры
- worksheet
- _Worksheet
Собственный объект листа для проверки. Несмотря на то что этот параметр имеет тип _Worksheet, как правило, в этот метод передается объект Worksheet.
Возвращаемое значение
Значение true, если для заданного объекта Worksheet существует ведущий элемент Worksheet; в противном случае — значение false.
Примеры
В следующем примере кода проверяется наличие у листов в текущей книге связанного ведущего элемента. Чтобы воспользоваться этим кодом, запустите его из класса ThisAddIn в проекте надстройки Excel, ориентированном на .NET Framework 4 или .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
Комментарии
Этот метод можно вызвать в надстройке уровня приложения для проверки существования управляемых элементов управления, которые необходимо сохранить перед закрытием или сохранением листа Excel.
Примечание
worksheetПараметр имеет тип Microsoft.Office.Interop.Excel._Worksheet , который является родительским интерфейсом Microsoft.Office.Interop.Excel.Worksheet . Поэтому этот метод может принимать объекты обоих типов: Microsoft.Office.Interop.Excel._Worksheet и Microsoft.Office.Interop.Excel.Worksheet . Как правило, при ссылке на лист Excel используется Microsoft.Office.Interop.Excel.Worksheet .
Применяется к
HasVstoObject(ListObject)
Возвращает значение, указывающее существует ли ведущий элемент ListObject для заданного собственного объекта списка.
public bool HasVstoObject (Microsoft.Office.Interop.Excel.ListObject listObject);
Параметры
- listObject
- ListObject
Собственный объект списка Excel для тестирования.
Возвращаемое значение
Значение true, если для заданного объекта ListObject существует ListObject; в противном случае — значение false.
Примеры
В следующем примере кода каждый собственный объект списка проверяется на листе, чтобы определить, имеет ли объект-список связанный ведущий элемент. Чтобы воспользоваться этим кодом, запустите его из класса ThisAddIn в проекте надстройки Excel, ориентированном на .NET Framework 4 или .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