Алексей Гладкий - Excel. Трюки и эффекты стр 16.

Шрифт
Фон

Автозапуск любимого файла при загрузке Excel

Возможности программы предусматривают автоматический запуск требуемого файла одновременно с открытием Excel. Иначе говоря, при открытии Excel на экране отобразится не пустая рабочая книга (как обычно), а содержимое конкретного файла. Для достижения такого эффекта необходимо поместить требуемый файл в каталог автоматической загрузки – XLStart. Этот каталог расположен в папке с файлами Microsoft Office (например, по адресу С: \ Program Files\Microsoft Office\Office12\XLSTART). При необходимости можно поместить в указанный каталог несколько файлов – в результате при запуске Excel они автоматически будут открыты в разных окнах. Однако для настройки автоматического запуска нескольких файлов удобнее выполнить следующие действия.

1. Открыть все файлы, которые должны автоматически открываться вместе с запуском Excel.

2. На вкладке Вид в группе Окно выбрать команду Сохранить рабочую область и в открывшемся окне по обычным правилам Windows указать путь к каталогу автоматической загрузки (в нашем примере – С: \Program Files\Microsoft Office\Office12\XLStart), после чего нажать кнопку ОК.

В результате в каталог автозагрузки будет помещен файл с расширением XLW (это расширение файла рабочей области). Теперь при запуске Excel будут автоматически запускаться файлы, включенные в эту рабочую область.

Восстановление важной информации из испорченного файла

Использование трюка, описание которого приводится в данном подразделе, позволяет извлечь данные из испорченного файла с помощью встроенного в Excel механизма специальной вставки. Для этого необходимо выполнить следующие действия.

1. Создать две новые пустые книги.

2. В первой книге выделить диапазон ячеек и скопировать его в буфер.

3. Перейти ко второй книге.

4. Во второй книге выделить ячейку А1. На вкладке Главная выбрать из раскрывающегося списка кнопки Вставить (группа Буфер обмена) пункт Вставить связь.

5. На вкладке Данные, в группе Подключения нажать кнопку Изменить связи.

6. В открывшемся окне по обычным правилам Windows указать путь к испорченному файлу.

В большинстве случаев данный способ позволяет извлечь данные из испорченного файла.

Быстрое размножение рабочей книги

Используя средства VBA, можно сохранить текущую рабочую книгу сразу в нескольких разных папках. Для этого следует написать и выполнить макрос, код которого приведен в листинге 2.1.

Примечание

Все приведенные в книге листинги можно загрузить с сайта издательства "Питер" по адресу http://www.piter.com/download/978591180547/.

Листинг 2.1. Размножение рабочей книги

Sub DuplicateBook()

Dim avarFileNames As Variant

' Формирование массива из путей для копий книги

avarFileNames = Array("C:\" & _

ActiveWorkbook.Name, "D:\" & ActiveWorkbook.Name)

' Сохранение книги

ActiveWorkbook.SaveAs avarFileNames

End Sub

В приведенной программе используется возможность передавать методу SaveAs объекта Workbook массив строк. В результате выполнения данного макроса текущая рабочая книга будет сохранена одновременно на двух дисках – С: и D:.

Следует отметить, что после выполнения приведенного макроса текущей папкой для книги станет последний элемент массива 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 будет введен текст Можно закрывать.

Быстрое удаление из рабочей книги ненужных имен

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

Листинг 2.7. Удаление ненужных имен

Sub EraseNames()

Dim nmName As Name

Dim strMessage As String

' Проверка наличия в книге определенных имен

If ThisWorkbook.Names.Count = 0 Then

' В книге нет определенных имен

MsgBox "Имена не определены"

Exit Sub

End If

' Просмотр всей коллекции определенных имен и удаление тех, _

которые пользователю не нужны

For Each nmName In ThisWorkbook.Names

With nmName

' Спрашиваем пользователя о необходимости удалить _

найденное имя

strMessage = "Удалить имя " & .Name & " ? " & vbCr & _

"относящееся к " & .RefersTo

If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then

' Имя можно удалить

.Delete

End If

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3