Установка и снятие защиты книги
Защита на рабочую книгу от внесения в нее изменений устанавливается методом Protect, а снимается — методом Unprotect.
Protect(Password, Structure, Windows) Здесь:
r Password — необязательный параметр, задающий пароль для защиты книги. Если параметр опущен, то книга защищена без пароля;
r Structure — необязательный параметр, устанавливающий, защищена ли структура книги, т. е. взаимное расположение листов;
r Windows — необязательный параметр, определяющий защищены ли окна книги.
Защита с рабочей книги снимается методом Unprotect.
Unprotect(Password)
Здесь Password — необязательный параметр, указывающий пароль защиты.
В приводимом ниже коде из модуля рабочего листа обрабатывается событие BeforeRightciick объекта Worksheet (листинг 5.25). При щелчке правой кнопкой мыши на ячейке А1 устанавливается защита структуры и окон рабочей книги. Щелчок же правой кнопкой мыши на ячейке В1 снимает эту защиту.
Листинг 5.25. Установка и снятие защиты. Модуль рабочего листа
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
If Target.Address = "$A$1" Then
Cancel = True
ThisWorkbook.Protect Password:="wow", Structure:=True, _
Windows:=True
End If
If Target.Address = "$B$1" Then
Cancel = True
ThisWorkbook.Unprotect Password:="wow"
End If
End Sub
Сохранение рабочей книги с именем, соответствующим текущей дате
Метод SaveAs объекта Workbook производит сохранение рабочей книги. Если необходимо, чтобы книга сохранилась так, чтобы ее именем была текущая дата, то можно воспользоваться кодом из листинга 5.26.
Листинг 5.26. Сохранение рабочей книги с именем, соответствующим текущей дате
Sub SaveAsTodaysDate()
Dim FileName As String, Path As String
Path = "C:\"
FileName » Format(Now(), "mmddyy")
ActiveWorkbook.SaveAs Path & FileName
End Sub
События объекта Workbook
У объекта Workbook имеется большая коллекция событий, перечисленных в табл. 5.6. Они позволяют управлять процессом открытия книги, печатью, отслеживать любые изменения, произведенные в ней, и т. д.
Таблица 5.6. События объекта W orkbook
| Событие | Генерируется |
| Activate | При активизации рабочей книги |
| Addinlnstall | Когда рабочая книга инсталлируется как надстройка |
| AddinUninstall | Когда рабочая книга удаляется как инсталлированная надстройка |
| BeforeClose | Перед закрытием рабочей книги |
| BeforePrint | Перед печатью |
| BeforeSave | Перед сохранением рабочей книги |
Таблица 5.6. События объекта W orkbook(Продолжение)
| Deactivate | При потере фокуса рабочей книгой |
| NewSheet | При создании нового листа |
| Open | При открытии рабочей книги |
| PivotTableCloseConnection | При закрытии связи сводной таблицы с источником данных |
| PivotTableOpenConnection | При установке связи сводной таблицы с источником данных |
| SheetActivate | При активизации любого рабочего листа |
| SheetBeforeDoubleClick | При двойном щелчке, но перед выполнением действий, назначенных по умолчанию двойному щелчку |
| SheetBeforeRightClick | При щелчке правой кнопкой мыши, но перед выполнением действий, назначенных по умолчанию этому щелчку |
| SheetCalculate | После завершения всех вычислений во всех рабочих листах и перерисовки диаграмм |
| SheetChange | При изменении значения на любом листе в какой-либо ячейке |
| SheetDeactivate | При потере листом фокуса |
| SheetFollowHyperlink | При щелчке на гиперссылке |
| SheetPivotTableUpdate | После обновления сводной таблицы |
| SheetSelectionChange | При изменении выделения на любом листе |
| WindowActivate | При активизации окна |
| WindowDeactivate | При деактивизации окна |
| WindowResize | При изменении размеров окна |
Запрет закрытия рабочей книги
У процедуры обработки события BeforeClose объекта Workbook, генерируемого перед закрытием рабочей книги, имеется параметр Cancel. При значении True он блокирует закрытие книги. При значении False — закрытие разрешено. Например, следующий код (листинг 5.27) из модуля ЭтаКнига разрешает пользователю закрыть книгу только в случае, если в ячейку А1 введена строка "Go".
Листинг 5.27. Запрет закрытия рабочей книги. Модуль ЭтаКнига
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A1").Value = "Go" Then
Cancel = False
Else
Cancel = True
End If
End Sub
Дата добавления: 2019-02-12; просмотров: 187; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
