Следует отметить, что после выполнения приведенного макроса текущей папкой для книги станет последний элемент массива avarFileNames. То есть при последующем выполнении команды Файл → Сохранить в данном случае книга будет сохранена на диске D:.
Сохранение рабочей книги с именем, представляющим собой текущую дату
Копию текущей рабочей книги можно сохранить по указанному пути с именем, представляющим собой текущую дату, то есть в формате ддммгг.xlsx. Для этого нужно написать и запустить следующий макрос (листинг 2.2).
Листинг 2.2. Сохранение книги с именем, представляющим собой текущую дату
Sub DuplicateBook()
Dim avarFileNames As Variant
' Формирование массива из путей для копий книги
avarFileNames = Array(«C:\» & _
ActiveWorkbook.Name, «D:\» & ActiveWorkbook.Name)
' Сохранение книги
ActiveWorkbook.SaveAs avarFileNames
End Sub
В результате применения данного макроса текущая книга будет сохранена в прежнем каталоге, но под именем, соответствующим дате на момент сохранения (например, 140705.xls).
Создание книги с одним листом
В процессе работы иногда возникает необходимость создания рабочей книги, состоящей только из одного листа. Можно, конечно, создать обычную новую книгу и вручную удалить ненужные листы (напомню, что для удаления необходимо щелкнуть правой кнопкой мыши на ярлыке с именем листа и выбрать в контекстном меню пункт Удалить). Однако для решения данной задачи все же целесообразнее воспользоваться языком VBA и написать макрос, код которого приведен в листинге 2.3.
Листинг 2.3. Книга с одним листом
Sub NewOneSheetBook()
Workbooks.Add xlWBATWorksheet
End Sub
В результате выполнения данного макроса будет создана новая рабочая книга, в состав которой войдет только один рабочий лист. Эта книга будет открыта в отдельном окне.
Установка и снятие защиты рабочей книги
Как известно, защитить рабочую книгу от внесения в нее изменений и снять эту защиту можно с помощью соответствующих команд на вкладке Рецензирование в группе Изменения. Однако для этого можно также воспользоваться макросом, в котором содержатся следующие параметры: Password – для задания пароля, Structure – для защиты структуры книги (взаимного расположения рабочих листов) и Windows – для защиты окон книги (например, при использовании данного параметра будет невозможно свернуть или закрыть окно защищенной книги). Следует отметить, что все параметры являются необязательными.
Пример такого макроса приведен в листинге 2.4 (данный код должен быть помещен в модуль рабочего листа).
Листинг 2.4. Защита рабочей книги
Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
If Target.Address = «$D$2» Then
' Установка защиты рабочей книги (с паролем «123», _
включенной защитой структуры книги и защитой расположения _ окон)
ThisWorkbook.Protect «123», True, True
' Указание не обрабатывать нажатие кнопки мыши _ в этой
ячейке
Cancel = True
ElseIf Target.Address = «$E$5» Then
' Снятие защиты с книги (необходимо указать ранее установленный _ пароль)
ThisWorkbook.Unprotect «123»
Cancel = True
End If
End Sub
В данном примере включение защиты будет выполняться щелчком правой кнопки мыши на ячейке D2, а снятие защиты – щелчком правой кнопки на ячейке Е5.
При необходимости можно запретить вывод текущей рабочей книги на печать (при этом все остальные действия с рабочей книгой остаются доступными). Для этого достаточно записать небольшой макрос, код которого выглядит следующим образом (листинг 2.5; данный код следует поместить в модуль ЭтаКнига).
Листинг 2.5. Запрет печати книги
Sub Workbook_BeforePrint(Cancel As Boolean)
' Установка флага в True заставляет Exсel игнорировать команду _
отправки книги на печать
Cancel = True
End Sub
После выполнения данного макроса перестанут выполняться команды пункта Печать, расположенного в главном меню программы, которое вызывается нажатием Кнопки «Office».
Закрытие рабочей книги только при выполнении условия
С помощью несложного трюка можно запретить закрытие текущей рабочей книги. Для этого можно воспользоваться кодом, приведенным в листинге 2.6 (этот код должен быть помещен в модуль ЭтаКнига).
Листинг 2.6. Условное закрытие книги
Sub Workbook_BeforeClose(Cancel As Boolean)
If Range(«A1»).Value <> «Можно закрывать» Then
' Условие закрытия не выполнено. Укажем Exсel игнорировать _
команду
Cancel = True
End If
End Sub
При использовании данного кода закрытие текущей рабочей книги будет возможно лишь после того, как в ячейку А1 будет введен текст Можно закрывать.
Читать дальше
Конец ознакомительного отрывка
Купить книгу