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


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

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

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

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

Синтаксис

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

returnValue = Workbook.HasVstoObject(workbook)
public static bool HasVstoObject(
    _Workbook workbook
)

Параметры

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

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

Заметки

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

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

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

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

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

Примеры

В следующем примере кода проверяется, имеет ли текущая книга расширенный объект 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;
                }
            }
        }
    }
}

Разрешения

См. также

Ссылки

Workbook Класс

Workbook - члены

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

WorkbookExtensions.HasVstoObject

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

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

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

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

Дата

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

Причина

Июль 2008

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

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