Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
объектная модель Excel.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Объект 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