- •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.6.2. Свойства CodeName, FullName, Name
14-03-Excel Workbook Name.xlsm - пример к п. 14.6.2.
Эти свойства возвращают различные имена книги. Так, CodeName - это имя, под которым книга видна в окне Project Explorer (обычноЭтаКнига ). FullName - имя файла книги вместе с путем. Name - имя файла книги.
В листинге 14.3. вы можете найти пример вывода различных имен книги.
MsgBox "Кодовое имя текущей книги: " + _
ActiveWorkbook.CodeName + Chr(13) + _
"Имя текущей книги: " + _
ActiveWorkbook.Name + Chr(13) + _
"Полное имя книги: " + _
ActiveWorkbook.FullName
Листинг 14.3. Вывод различных имен книги (html, txt)
14.7. События объекта Workbook
14-04-Excel Workbook Events.xlsm - пример к п. 14.7.
В VBA-проекте, который прикреплен к книге, есть объект ЭтаКнига. Если сделать по нему двойной щелчок - будет открыто окно редактора кода, в котором, по обычной схеме, можно выбрать объект - в данном случае это Workbook, а также события, для которых автоматически будет создан обработчик.
Книги в Microsoft Excel могут реагировать на множество событий, среди них следующие, которые происходят при таких обстоятельствах:
Activate - при активации книги
BeforeClose - перед закрытием книги, если книга изменялась и должен появиться запрос на ее сохранение - происходит перед запросом.
BeforePrint - перед печатью.
BeforeSave - перед сохранением.
Deactivate - при деактивации.
NewSheet - при добавлении нового листа в книгу.
Open - при открытии книги.
SheetActivate - при активации любого листа
SheetBeforeDoubleClick - после двойного щелчка в книге, до стандартной процедуры обработки.
SheetBeforeRightClick - перед щелчком правой кнопки мыши.
SheetCalculate - при пересчете листа или изменении данных, которые отображаются на диаграмме.
SheetChange - при изменении содержимого ячейки.
SheetDeactivate - при деактивации листа.
SheetFollowHyperlink - при щелчке по гиперссылке.
SheetSelectionChange - при изменении выделения.
Например, листинг 14.4. позволяет вывести в окне сообщения информацию об имени измененной ячейки, имени листа, на котором она расположена, и новом содержимом ячейки.
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
MsgBox "Вы отредактировали даные на листе: " & _
Sh.Name & ", в ячейке " & Target.Address & _
". Теперь ячейка содержит следующие данные: " & _
Target.Value
End Sub
Листинг 14.4. Вывод информации об измененной ячейке (html, txt)
Здесь мы воспользовались параметрами, которые передаются в обработчик события. Параметр Sh содержит ссылку на лист, на котором произошли изменения, а Target представляет собой ссылку на измененную ячейку или диапазон.
14.8. Коллекция Worksheets
Коллекция Worksheets содержит листы открытой книги. Ее свойства и методы служат для работы с ними.
14.9. Методы коллекции Worksheets
14.9.1. Add - добавляем листы в книгу
14-05-Excel Worksheets Add.xlsm - пример к п. 14.9.1.
Позволяет добавить в книгу новый лист. Полный вызов метода выглядит так.
Add(Before, After, Count, Type)
Before (До) и After (После) позволяют задавать позицию листа относительно других листов книги (можно использовать лишь один из них), Count задает количество добавляемых листов, а Type - тип листа. Чаще всего этот метод используют без параметров.
Например, листинг 14.5. добавляет новый лист в книгу, в которой хранится макрос, содержащий этот код:
ThisWorkbook.Worksheets.Add
Листинг 14.5. Добавляем новый лист (html, txt)
А так можно добавить в книгу столько листов, сколько указал пользователь в ответ на вопрос программы (листинг 14.6.).
ActiveWorkbook.Worksheets.Add _
Count:=Val(InputBox("Введите количество листов"))
Листинг 14.6. Добавляем в книгу указанное количество листов (html, txt)
Обычно листы в книгах MS Excel имеют осмысленные имена. Однако, как вы могли заметить, метод Add не предусматривает задание имени вставляемому листу, оставляя его в значении по умолчанию. Чтобы переименовать добавленный лист, вам придется пользоваться свойством Name объекта Worksheet.
