Проверка установки защиты на содержание



Рабочего листа

Свойство ProtectContents возвращает значение True, если содержание рабочего листа защищено. Код листинга 5.31 проверяет наличие защиты содержания и в случае присутствия таковой предлагает ее снять.

Sub DemoProtectContents()

On Error Resume Next

If Worksheets(1).ProtectContents Then

MsgBox "Содержание рабочего листа защищено"

Worksheets(1).Unprotect

Else

MsgBox "Содержание рабочего листа не защищено"

End If

End Sub

Проверка существования рабочего листа

Все листы рабочей книги образуют семейство Sheets. Для того чтобы опре­делить, существует ли специфицируемый лист, достаточно попытаться получить на него ссылку и, в случае отсутствия таковой, перехватить генерируемую ошибку. Код листинга 5.32 демонстрирует подобный подход. Функция SheetExists возвращает значение True, если данный лист сущест­вует, и False — в противном случае.

Листинг 5.32. Проверка существования рабочего листа

Function SheetExists(SheetName As String) As Boolean

Dim obj As Object

On Error GoTo errorHandler:

Set obj = Sheets(SheetName)

SheetExists = True

Exit Function

errorHandler:

SheetExists = False

End Function

Методы объекта Worksheet

Объект W orksheet обладает большой коллекцией методов, позволяющих производить широкий спектр действий над данными, начиная выбором, перемещением и удалением, заканчивая проверкой правописания. В табл. 5.10 перечислим основные методы объекта Worksheet.

Таблица 5.10. Методы объекта Worksheet

Метод Описание
Activate Активизирует указанный рабочий лист
Calculate Повторно вычисляет данные на рабочем листе
ChartObjects Возвращает семейство ChartObjects всех вложенных в рабочий лист диаграмм
CheckSpelling Проверяет правописание в ячейках, примечаниях, заголовке и объектах, расположенных на рабочем листе
Circlelnvalid Обрамляет некорректно введенные данные
ClearArrows Удаляет стрелки, демонстрирующие зависимости на рабочем листе
ClearCircles Удаляет обрамление с некорректно введенных данных
Copy Копирует лист в другое местоположение той же книги
Delete Удаляет лист
Move Перемещает лист
OLEObjects Возвращает семейство OLEObjects всех внедренных OLE-объектов
Paste Вставляет данные из буфера обмена на рабочий лист
PasteSpecial Вставляет данные на рабочий лист, используя специальную вставку
PivotTableWizard Создает сводную таблицу

Таблица 5.10. Методы объекта Worksheet (Продолжение)

Метод Описание
Printout Печатает содержимое рабочего листа
PrintPreview Осуществляет предварительный просмотр содержимого рабочего листа перед печатью
Protect Устанавливает защиту на рабочий лист
ResetAllPageBreaks Переустанавливает на рабочем листе все разрывы страницы
SaveAs Сохраняет измененную страницу в отдельный файл
Scenarios Возвращает либо объект Scenario, представляющий единственный сценарий, либо семейство Scenarios всех сценариев
Select Выбирает указанный рабочий лист
SetBackgroundPicture Устанавливает фоновый рисунок для рабочего листа
ShowAllData Отображает все скрытые при помощи примененных фильтров данные
Unprotect Снимает защиту с рабочего листа
Scenarios Возвращает либо объект Scenario, представляющий единственный сценарий, либо семейство Scenarios всех сценариев

Удаление рабочего листа

Без предупреждения пользователя

Для удаления рабочего листа без предупреждения пользователя надо временно при помощи свойства DisplayAlerts отключить отображение предупреждающего окна, а затем удалить требуемый лист. После этого режим отображения предупреждений разумно снова включить. В следующем коде, например, по данной схеме удаляется рабочий лист Отчет .

Application.DisplayAierts = False

Worksheets("Отчет").Delete

Application.DisplayAierts = True

Установка и снятие защиты с рабочего листа

Защита на рабочий лист устанавливается методом Protect, у которого имеется обширная коллекция необязательных параметров.

Protect(Password, DrawingObjects, Contents, Scenarios, UserlnterfaceOnly, AllowFormattingCells _,

AllowOFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, _ AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, _

AllowUsingPivotTables)

Здесь:

r Password — задает пароль защиты;

r DrawingObjects — устанавливает защиту на графические объекты;

r Contents — определяет защиту на содержание ячеек;

r Scenarios — задает защиту на сценарии;

r UserintefaceOnly — защита пользовательского интерфейса, но не мак­росов. Если этот параметр опущен, то защита применяется как к интер­фейсу, так и макросам;

r AllowFormattingCells — разрешение форматировать ячейки;

r AllowFormattingColumns — разрешение форматировать столбцы;

r AllowFormattingRows — разрешение форматировать строки;

r AllowinsertingCoiumns — разрешение вставлять столбцы;

r AllowinsertingRows — разрешение вставлять строки;

r AllowInsertingHyperiinks — разрешение вставлять гиперссылки;

r AllowDeietingColumns — разрешение удалять столбцы;

r AllowDeietingRows — разрешение удалять строки;

r AllowSorting — разрешение сортировать данные;

r AllowFiltering — разрешение фильтровать данные;

r AllowUsingPivotTabies — разрешение конструировать сводные таблицы.

Снятие защиты осуществляется методом

Unprotect( Password )

Здесь Password — пароль защиты.

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


Дата добавления: 2019-02-12; просмотров: 180; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!