WorksheetExtensions.HasVstoObject Метод (2007 System)
Обновлен: Ноябрь 2007
Возвращает значение, указывающее, создан ли ведущий элемент Excel Microsoft.Office.Tools.Excel.Worksheet для текущего собственного элемента Excel Microsoft.Office.Interop.Excel._Worksheet.
Пространство имен: Microsoft.Office.Tools.Excel.Extensions
Сборка: Microsoft.Office.Tools.Excel.v9.0 (в Microsoft.Office.Tools.Excel.v9.0.dll)
Синтаксис
'Декларация
<ExtensionAttribute> _
Public Shared Function HasVstoObject ( _
worksheet As _Worksheet _
) As Boolean
'Применение
Dim worksheet As _Worksheet
Dim returnValue As Boolean
returnValue = worksheet.HasVstoObject()
public static bool HasVstoObject(
this _Worksheet worksheet
)
Параметры
- worksheet
Тип: Microsoft.Office.Interop.Excel._Worksheet
Лист, который требуется расширить. Не предоставляйте этот параметр вручную. Если вы вызовете этот метод для листа Excel, данный параметр будет предоставлен во время выполнения.
Возвращаемое значение
Тип: System.Boolean
Возвращает true, если ведущий элемент листа был создан для текущего собственного листа Excel; в противном случае возвращается false.
Примечание об использовании
В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа _Worksheet. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе Методы расширения (Visual Basic) или Методы расширения (руководство по программированию в C#).
Заметки
Можно вызвать метод расширения HasVstoObject в надстройке уровня приложения. Если данный метод возвращает true, можно проверить наличие управляемых элементов на листе, который необходимо сохранить, перед тем, как закрыть или сохранить лист Excel. Пример, показывающий, как сохранить лист Excel workbook, содержащий управляющие элементы, см. в разделе Пример динамических элементов управления надстройками Excel.
Также можно использовать метод расширения HasVstoObject в настройках уровня документа. Пример использования данного метода в надстройках уровня документа, см. в разделе Добавление элементов управления в документы Office во время выполнения.
![]() |
---|
Параметр 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 для текущего листа, чтобы проверить, есть ли на листе связанный с ним ведущий элемент. Если это так, в коде выполняется итерация листов книги и проверяется наличие соответствующего ведущего элемента листа. Если ведущий элемент листа для данной страницы существует, пример возвращает данный ведущий элемент, отображая сообщение о его наличии. Данный пример кода использует обработчик событий для события WorkbookBeforeSave() для выполнения проверки. Чтобы использовать данный кода, запустите его из класса ThisAddIn в проекте надстройки Excel.
Private Sub Application_WorkbookBeforeSave( _
ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, _
ByVal SaveAsUI As Boolean, _
ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave
If Wb.HasVstoObject() = True Then
For Each interopSheet As Excel.Worksheet In Wb.Worksheets
If interopSheet.HasVstoObject() = True Then
Dim vstoSheet As Worksheet = interopSheet.GetVstoObject()
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 (Wb.HasVstoObject() == true)
{
foreach (Excel.Worksheet interopSheet in Wb.Worksheets)
{
if (interopSheet.HasVstoObject() == true)
{
Worksheet vstoSheet = interopSheet.GetVstoObject();
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;
}
}
}
}
}
Разрешения
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Microsoft.Office.Tools.Excel.Extensions - пространство имен
Другие ресурсы
Пример динамических элементов управления надстройками Excel