
- •14.1. Коллекция Workbooks - работа с книгами
- •14.2. Методы Коллекции Workbooks
- •14.2.1. Add, Close, Open - стандартная работа с книгами
- •14.6.2. Свойства CodeName, FullName, Name
- •14.7. События объекта Workbook
- •14.8. Коллекция Worksheets
- •14.9. Методы коллекции Worksheets
- •14.9.2. Copy - копируем листы
- •14.9.3. Delete, Move - удаляем и перемещаем листы
- •14.12.2. Paste, PasteSpecial, о работе с Selection
- •14.12.3. Protect и Unprotect - защита и снятие защиты
- •14.13. Свойства объекта Worksheet
- •14.13.1. Cells - ячейки листа
- •14.13.6. UsedRange - заполненные ячейки
- •14.13.7. Visible - скрытие и отображение листов
- •14.14. События объекта Worksheet
14.9.2. Copy - копируем листы
14-06-Excel Worksheets Copy.xlsm - пример к п. 14.9.2.
Позволяет скопировать лист в новое место книги.
Принимает два параметра - Before и After, которые, соответственно, позволяют задать положение перемещаемого листа до или после какого-то другого листа. Например, листинг 14.7. копирует активный лист в позицию после листа с именем "Данные".
ActiveWorkbook.ActiveSheet.Copy _
After:=Worksheets("Данные")
Листинг 14.7. Создаем копию листа в пределах книги (html, txt)
Если метод вызвать без параметров, то будет создана новая книга, в которую будет помещена копия листа, для которого вызывался этот метод. Например, так, как в листинге 14.8.
ActiveWorkbook.ActiveSheet.Copy
Листинг 14.8. Копируем лист в новую книгу (html, txt)
14.9.3. Delete, Move - удаляем и перемещаем листы
14-07-Excel Worksheets Del Mov.xlsm - пример к п. 14.9.3.
Метод Delete удаляет лист. Например, так мы удаляем первый лист в коллекции Workbooks (листинг. 14.9.)
ActiveWorkbook.Worksheets.Item(1).Delete
Листинг 14.9. Удаляем лист (html, txt)
Обратите внимание на то, что в этом примере мы обращаемся к листу с помощью свойства Item коллекции Worksheets, которое позволяет работать с листом, используя индекс или имя.
Move позволяет переместить лист на новое место в книге. В качестве параметров принимает параметры Before и After, которые задают его положение до или после заданного в них листа. Например, так (листинг 14.10.) мы перемещаем активный лист в книге в позицию, предшествующую листу с именем Данные.
ActiveWorkbook.ActiveSheet.Move _
Before:=Worksheets("Данные")
14.10. Свойства коллекции Worksheets
14.10.1. Count, Item, Visible - работа с объектами
Мы уже не раз сталкивались с этими свойствами для других объектов. Count позволяет узнать количество объектов в коллекции, Item - обратиться к объекту по имени или индексу, Visible- отображать и скрывать объект.
14.11. Объект Worksheet
Worksheet - рабочий лист - его методы, свойства и события находятся в непосредственной близости от ячеек, с которыми, в основном, ведется работа при программировании для MS Excel.
14.12. Методы объекта Worksheet
Практически все часто используемые методы Workheet вам уже знакомы - либо по описаниям предыдущих объектов и коллекций Excel, либо - по Microsoft Word.
14.12.1. Activate, Calculate, Copy, Delete, Move, Select, PivotTables, ShowAllData
Activate - делает лист активным.
Calculate - пересчитывает лист.
Copy, Delete, Move - соответственно, копирует, удаляет, перемещает лист в книге.
Select - выделяет лист.
PivotTables - возвращает коллекцию сводных таблиц, расположенных на листе. Подробнее о сводных таблицах мы поговорим в п. 7.10., посвященному работе с базами данных. ShowAllData - показывает все содержимое рабочего листа - отменяет скрытие данных при фильтровании и т.д.
14.12.2. Paste, PasteSpecial, о работе с Selection
14-08-Excel Worksheet Paste.xlsm - пример к п. 14.2.2.
Метод Paste вставляет содержимое буфера обмена в указанную область. Для копирования данных в буфер обмена используется метод Copy объекта Range (или объекта Selection ).
PasteSpecial осуществляет специальную вставку. Например, с помощью этого метода можно скопировать содержимое ячеек, содержащих формулы и вставить его в другие ячейки, преобразовав таким образом, чтобы вставлены были лишь вычисленныезначения формул.
Рассмотрим пример. Внесем в пять горизонтально расположенных ячеек (от A2 до E2 ) какие-нибудь числа, а в шестой ( F2 ) запишем такую формулу: =сумм(A2:E2). В шестой ячейке будет отображена сумма первых пяти. Теперь вручную создадим такой макрос, назвав его DoubleCopy (листинг 14.11.).
Перед запуском макроса выделите область, заполненную данными.
'Копируем выделенную область
'в буфер обмена
Application.Selection.Copy
'Выделяем ячейку A3
Range("A3").Select
'Вставляем содержимое буфера обмена
ActiveSheet.Paste
'Теперь выделяем диапазон ячеек,
'в котором хранятся исходные данные
Range("A2:F2").Select
Application.Selection.Copy
Range("A4").Select
'Вставляем значения - без формул
Selection.PasteSpecial Paste:=xlPasteValues
Листинг 14.11. Работа с буфером обмена (html, txt)
Смысл команд этой программы ясен из комментариев. Обратите внимание на то, что здесь мы работали с объектом Selection. Так же посмотрите на содержимое ячеек в файле-примере. При вставке скопированного методом Paste, вставляется абсолютно все - в том числе и формулы, а при использовании PasteSpecial со свойством Paste, установленным в xlPasteSpecial, вставляются лишь значения, без формул.