Excel. Трюки и эффекты | страница 46
Быстрое размножение рабочей книги
Используя средства VBA, можно сохранить текущую рабочую книгу сразу в нескольких разных папках. Для этого следует написать и выполнить макрос, код которого приведен в листинге 2.1.
Примечание
Все приведенные в книге листинги можно загрузить с сайта издательства «Питер» по адресу http://www.piter.com/download/978591180547/.
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).
Sub DuplicateBook()
Dim avarFileNames As Variant
' Формирование массива из путей для копий книги
avarFileNames = Array(«C:\» & _
ActiveWorkbook.Name, «D:\» & ActiveWorkbook.Name)
' Сохранение книги
ActiveWorkbook.SaveAs avarFileNames
End Sub
В результате применения данного макроса текущая книга будет сохранена в прежнем каталоге, но под именем, соответствующим дате на момент сохранения (например, 140705.xls).
Создание книги с одним листом
В процессе работы иногда возникает необходимость создания рабочей книги, состоящей только из одного листа. Можно, конечно, создать обычную новую книгу и вручную удалить ненужные листы (напомню, что для удаления необходимо щелкнуть правой кнопкой мыши на ярлыке с именем листа и выбрать в контекстном меню пункт Удалить). Однако для решения данной задачи все же целесообразнее воспользоваться языком VBA и написать макрос, код которого приведен в листинге 2.3.
Sub NewOneSheetBook()
Workbooks.Add xlWBATWorksheet