Поделиться через


Worksheet.HasVstoObject Метод (2007 System)

Обновлен: Июль 2008

Возвращает значение, указывающее, создан ли ведущий элемент Excel Microsoft.Office.Tools.Excel.Worksheet для указанного собственного объекта списка Excel Microsoft.Office.Interop.Excel._Worksheet.

Пространство имен:  Microsoft.Office.Tools.Excel
Сборка:  Microsoft.Office.Tools.Excel.v9.0 (в Microsoft.Office.Tools.Excel.v9.0.dll)

Синтаксис

'Декларация
Public Shared Function HasVstoObject ( _
    worksheet As _Worksheet _
) As Boolean
'Применение
Dim worksheet As _Worksheet
Dim returnValue As Boolean

returnValue = Worksheet.HasVstoObject(worksheet)
public static bool HasVstoObject(
    _Worksheet worksheet
)

Параметры

Возвращаемое значение

Тип: System.Boolean
Возвращает true, если ведущий элемент листа был создан для определенного собственного листа Excel; в противном случае возвращается false.

Заметки

Вызов данного метода равносилен вызову метода WorksheetExtensions.HasVstoObject. Единственная разница в том, что это статический метод (Shared в Visual Basic), который следует вызывать для типа Microsoft.Office.Tools.Excel.Worksheet, в котором метод WorksheetExtensions.HasVstoObject должен быть вызван для объекта Microsoft.Office.Interop.Excel.Worksheet.

Например, можно вызвать данный метод расширения в надстройке уровня приложения. Если данный метод возвращает true, можно проверить наличие управляемых элементов на листе, который необходимо сохранить, перед тем, как закрыть или сохранить лист Excel.

Также можно использовать данный метод в настройках уровня документа.

Cc472108.alert_note(ru-ru,VS.90).gifПримечание.

Параметр 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.

Примеры

В следующем примере кода проверяется, имеет ли текущая книга расширенный объект Visual Studio Tools for Office. Если это так, в коде выполняется итерация листов книги и каждый лист проверяется на наличие соответствующего объекта листа Visual Studio Tools for Office. Если Visual Studio Tools for Office объект листа для данной страницы существует, пример возвращает этот объект, отображает сообщение для пользователя, и завершается. Данный пример кода использует обработчик событий для события WorkbookBeforeClose() для выполнения проверки. Чтобы использовать данный код, запустите его из класса ThisAddIn в проекте надстройки Excel.

Private Sub Application_WorkbookBeforeClose( _
    ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, _
    ByRef Cancel As Boolean) Handles Application.WorkbookBeforeClose

    If Workbook.HasVstoObject(Wb) = True Then
        For Each interopSheet As Excel.Worksheet In Wb.Worksheets
            If Worksheet.HasVstoObject(interopSheet) = True Then
                Dim vstoSheet As Worksheet = Worksheet.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_WorkbookBeforeClose(
    Microsoft.Office.Interop.Excel.Workbook Wb, ref bool Cancel)
{
    if (Workbook.HasVstoObject(Wb) == true)
    {
        foreach (Excel.Worksheet interopSheet in Wb.Worksheets)
        {
            if (Worksheet.HasVstoObject(interopSheet) == true)
            {
                Worksheet vstoSheet = Worksheet.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;
                }
            }
        }
    }
}

Разрешения

См. также

Ссылки

Worksheet Класс

Worksheet - члены

Microsoft.Office.Tools.Excel - пространство имен

WorksheetExtensions.HasVstoObject

Другие ресурсы

Методы расширения (руководство по программированию в C#)

Методы расширения (Visual Basic)

Журнал изменений

Дата

Журнал событий

Причина

Июль 2008

Новый раздел.

Изменение функции SP1.