Проверка установки защиты на содержание
Рабочего листа
Свойство 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!