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.

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

Boolean

Значение 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.

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

Boolean

Значение 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 для тестирования.

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

Boolean

Значение 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

Применяется к