Excel. Трюки и эффекты | страница 46



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

Используя средства 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