- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
Объект Protection
Объект Protection инкапсулирует в себе информацию о том, какая защита включена на рабочем листе. Этот объект возвращается свойством Protection объекта Worksheet. Его свойства, перечисленные в табл. 5.11, как раз идентифицируют установленную защиту.
Таблица 5.11. Свойства объекта Protection
-
Свойство
Описание
AllowDeletingColumns
Разрешено удаление столбцов
AllowDeletingRows
Разрешено удаление строк
AllowFiltering
Разрешена фильтрация
AllowFormattingCells
Разрешено форматирование ячеек
AllowFormattingColumns
Разрешено форматирование столбцов
AllowFormattingRows
Разрешено форматирование строк
AllowInsertingCoiumns
Разрешена вставка столбцов
AllowInsertingHyperlinks
Разрешена вставка гиперссылок
AllowInsertingRows
Разрешена вставка строк
AllowSorting
Разрешена сортировка
AllowUsingPivotTables
Разрешено использование сводных таблиц
Кроме объекта Protection имеется еще ряд свойств рабочего листа, определяющих тип защиты, не покрытых свойствами объекта Protection (табл. 5.12).
Таблица 5.12. Свойства, проверяющие установленную защиту
-
Свойство
Описание
ProtectContents
Свойство "только для чтения", проверяющее, установлена ли защита на содержимое рабочего листа
ProtectDrawingObjects
Свойство "только для чтения", проверяющее, установлена ли защита на графические объекты
ProtectScenarios
Свойство "только для чтения", проверяющее, установлена ли защита на сценарии
ProtectionMode
Свойство "только для чтения", проверяющее, установлена ли защита только пользовательского интерфейса
В следующем примере демонстрируется работа с объектом Protection (листинг 5.33). Сначало при помощи метода Protect устанавливается защита на рабочем листе, затем она индицируется свойствами объекта Protection. После чего удаляется разрешение редактирования какого-либо диапазона. Информация о диапазонах инкапсулируется в объектах AllowEditRange, а ВСе такие диапазоны образуют семейство AllowEditRanges.
После чего, используя метод Add данного семейства, разрешается редактирование данных в диапазонах В1:ВЗ и С1:СЗ.
Public Sub SetProtect()
Dim sh As Worksheet
Dim Protect As Protection
Dim rgn As Range, r As AllowEditRange
Set sh = ThisWorkbook.Worksheets(1)
Set rgn = sh.Range("B1:B3")
Set Protect = sh.Protection
' Установка защиты
sh.Protect Password:="bhv", DrawingObjects:=True, _
Contents:=True, Scenarios:=True '
‘ Индикация установленных защит
Dim s As String
With Protect
s = "Allow Deleting Columns - " & .AllowDeletingColumns & vbCr
s = s + "Allow Deleting Rows - " & .AllowDeletingRows & vbCr
s = s + "Allow Filtering - " s .AllowFiltering & vbCr
s = s + "Allow Formatting Cells - " & .AllowFormattingCells & vbCr
s = s + "Allow Formatting Columns - " & .AllowFormattingColumns & vbCr
s = s + "Allow Formatting Rows - " & .AllowFormattingRows & vbCr
s = s + "Allow Inserting Columns - " & .AllowInsertingColumns & vbCr
s = s + "Allow Inserting Hyperlinks - " & .AllowInsertingHyperlinks & vbCr
s = s + "Allow Inserting Rows - " & .AllowInsertingRows & vbCr
s = s + "Allow Sorting - " & .AllowSorting & vbCr
s = s + "Allow Using PivotTables - " & .AllowUsingPivotTables
End With
MsgBox s
sh.Unprotect ("bhv")
' Очистка разрешений редактирования диапазонов
For Each r In Protect.AllowEditRanges
r.Delete
Next r
' Разрешение редактирования внутри диапазона
Set r = Protect.AllowEditRanges.Add(Title:="Goods", _
Range:=rgn, Password:="")
Dim rNew As AllowEditRange
Set rNew - Protect.AllowEditRanges.Add(Title:="Price", _
Range:=Range("C1:C3"), Password:="")
sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Объект PageSetup и как вывести в колонтитул
имя книги, рабочего листа и текущую дату
Объет PageSetup, возвращаемый свойством PageSetup объекта Worksheet, позволяет контролировать установки документа перед его печатью. В частности, с помощью него можно установить и колонтитулы страницы. Здесь пригодятся свойства LeftHeader, RightHeader и CenterHeader. Следующий код (листинг 5.34) из модуля ЭтаКнига демонстрирует, как можно вывести в колонтитул имя книги и рабочего листа и текущую дату.
Sub FormatHeader()
Dim i As Integer
With ThisWorkbook
For i = 1 To .Worksheets.Count - 1
.Worksheets(i).PageSetup.LeftHeader = .FullName
.Worksheets(i).PageSetup.RightHeader = Now()
.Worksheets(i).PageSetup.CenterHeader = Worksheets(i).Name
Next
End With
End Sub
Private Sub Workbook_Open()
FormatHeader
End Sub
