- •11. Объектная модель Excel
- •11.1. Работа с книгами
- •11.1.1. Создание новой книги
- •11.1.2. Открытие существующей книги
- •11.1.3. Закрытие книг
- •11.1.4. Сохранение открытой книги
- •11.1.5. Получение и установка пути к файлу книги по умолчанию
- •11.1.6. Отображение диалогового окна для открытия файлов
- •11.2. Работа с листами
- •11.2.1. Добавление новых листов
- •11.2.6. Предварительный просмотр и печать листов
- •11.2.7. Перемещение листов в книгах
- •11.2.8. Создание и удаление групп на листахExcel
- •11.2.9. Изменение форматирования строк листа
- •11.2.10. Копирование данных и форматирование по листам
- •11.2.11. Проверка орфографии на листах
- •11.2.12. Программная сортировка данных
- •11.3. Работа с диапазонами
- •11.3.1. Ссылки на диапазоны
- •11.3.2. Автоматическое заполнение диапазонов
- •11.3.3. Хранение и извлечение значений дат в диапазонах
- •11.3.4. Применение стилей к диапазонам и их отмена
- •11.3.5. Поиск текста в диапазоне ячеек
- •11.3.6. Применение цвета к тексту в диапазоне ячеек
- •11.3.7. Программное выполнение вычислений
- •11.4. Работа с ячейками
- •11.5. Структурирование вExcel
11.2.8. Создание и удаление групп на листахExcel
1. Использование элемента управления NamedRange.
– Создание группы элементов управления NamedRangeна листе.
With Me
.data2001.Group()
.data2002.Group()
.dataAll.Group()
End With
– Удаление групп элементов управления NamedRange.
With Me
.data2001.Ungroup()
.data2002.Ungroup()
.dataAll.Ungroup()
End With
2. Использование собственных диапазонов Excel.
– Создание группы диапазонов Excel на листе:
With Me.Application
.Range("data2001").Group()
.Range("data2002").Group()
.Range("dataAll").Group()
End With
– Удаление групп собственных диапазонов Excel.
With Me.Application
.Range("data2001").Ungroup()
.Range("data2002").Ungroup()
.Range("dataAll").Ungroup()
End With
11.2.9. Изменение форматирования строк листа
Private Sub BoldCurrentRow(ByVal ws As Excel.Worksheet)
'1. Объявление статической переменной для отслеживания
'предыдущей выбранной строки.
StaticpreviousRowAsInteger= 0
'2. Извлечение ссылки на текущую активную ячейку
'с помощью свойства ActiveCell.
DimcurrentCellAsExcel.Range=Me.Application.ActiveCell
'3. Применение к текущей строке стиля жирного начертания
'с помощью свойства EntireRow активной ячейки.
currentCell.EntireRow.Font.Bold=True
'4. Проверка факта, что текущее значение previousRow не равно
'"0". Значение "0" означает, что код выполняется впервые.
IfpreviousRow<> 0Then
'5. Проверка факта, что текущая строка отличается
'от предыдущей.
IfcurrentCell.Row<>previousRowThen
'6. Извлечение ссылки на диапазон, представляющий
'ранее выбранную строку,а затем отмена жирного
'начертания для этой строки.
Dim rng As Excel.Range = _
DirectCast(ws.Rows(previousRow), Excel.Range)
rng.EntireRow.Font.Bold = False
End If
End If
'7.Сохранение номера текущей строки, чтобы она стала
'предыдущей при следующем проходе.
previousRow=currentCell.Row
End Sub
11.2.10. Копирование данных и форматирование по листам
Me.Application.ActiveWorkbook.Sheets.FillAcrossSheets( _
Me.Application.Range("rangeData"), _
Excel.XlFillWith.xlFillWithAll)
11.2.11. Проверка орфографии на листах
– в настройке на уровне документа:
Globals.Sheet1.CheckSpelling()
– в надстройке уровня приложения:
CType(Application.ActiveSheet, Excel.Worksheet).CheckSpelling()
11.2.12. Программная сортировка данных
1. Сортировка данных в элементе управления NamedRange.
– в проекте уровня документа (в классе листа):
Me.Fruits.Sort(Key1:=Me.Fruits.Columns(1), _
Order1:=Excel.XlSortOrder.xlAscending, _
Key2:=Me.Fruits.Columns(2), _
Order2:=Excel.XlSortOrder.xlAscending, _
Orientation:=Excel.XlSortOrientation.xlSortColumns, _
Header:=Excel.XlYesNoGuess.xlNo, _
SortMethod:=Excel.XlSortMethod.xlPinYin, _
DataOption1:=Excel.XlSortDataOption.xlSortNormal, _
DataOption2:=Excel.XlSortDataOption.xlSortNormal, _
DataOption3:=Excel.XlSortDataOption.xlSortNormal)
– в проекте уровня приложения (в VisualStudio, начиная с версии 2008 сSP1):
Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")
Fruits.Sort(Key1:=Fruits.Columns(1), _
Order1:=Excel.XlSortOrder.xlAscending, _
Key2:=Fruits.Columns(2), _
Order2:=Excel.XlSortOrder.xlAscending, _
Orientation:=Excel.XlSortOrientation.xlSortColumns, _
Header:=Excel.XlYesNoGuess.xlNo, _
SortMethod:=Excel.XlSortMethod.xlPinYin, _
DataOption1:=Excel.XlSortDataOption.xlSortNormal, _
DataOption2:=Excel.XlSortDataOption.xlSortNormal, _
DataOption3:=Excel.XlSortDataOption.xlSortNormal)
2. Сортировка данных в элементе управления ListObject.
– в проекте уровня документа (в классе листа):
Me.fruitList.Range.Sort( _
Key1:=Me.fruitList.ListColumns(1).Range, _
Order1:=Excel.XlSortOrder.xlAscending, _
Key2:=Me.fruitList.ListColumns(2).Range, _
Order2:=Excel.XlSortOrder.xlAscending, _
Orientation:=Excel.XlSortOrientation.xlSortColumns, _
Header:=Excel.XlYesNoGuess.xlYes)
– в проекте уровня приложения (в VisualStudio, начиная с версии 2008 сSP1):
Dim fruitList As Excel.ListObject = _
CType(Application.ActiveSheet, _
Excel.Worksheet).ListObjects.AddEx( _
Excel.XlListObjectSourceType.xlSrcRange, _
Application.Range("A1", "B2"))
fruitList.Range.Sort(Key1:=fruitList.ListColumns(1).Range, _
Order1:=Excel.XlSortOrder.xlAscending, _
Key2:=fruitList.ListColumns(2).Range, _
Order2:=Excel.XlSortOrder.xlAscending, _
Orientation:=Excel.XlSortOrientation.xlSortColumns, _
Header:=Excel.XlYesNoGuess.xlYes)