Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Dim FName As String 'имя файла-копии
With ActiveWorkbook ' Сформировать новое имя файла из исходного FName - Left(.Name, InStr(.Name, "." ) - 1) & " _bp2.xls" FName =.Path & " \" & FName .SaveCopyAs Filename: =FName End With End Sub Сравните этот же код без использования структуры With...End With Dim FName As String ' имя файла-копии ' Сформировать новое имя файла из исходного FName = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, "." ) - 1) _ & " _bp.xls" FName = ActiveWorkbook.Path & " \" & FName 22 ActiveWorkbook.SaveCopyAs Filename: =FName End Sub Работа с коллекциями объектов и контейнерами объектов Коллекция (collection) объектов — это группа связанных объектов, таких как все рабочие листы в рабочей книге или все символы в параграфе. Объект в коллекции называется элементом (element) этой коллекции. Сама коллекция является объектом; коллекции имеют собственные свойства и методы. Каждая коллекция, например, имеет свойство Count, которое возвращает число элементов в коллекции. Если в активной рабочей книге имеется 16 рабочих листов, то следующее выражение вычисляется до числа 16: Application.ActiveWorkbook.Worksheets.Count В этом выражении Worksheets— коллекция всех рабочих листов в рабочей книге, ActiveWorkbook— свойство Excel-объекта Application, возвращающее активную рабочую книгу, a Count— свойство коллекции Worksheets, возвращающее общее число рабочих листов в коллекции. Это простое выражение помогает проиллюстрировать то, что одни объекты содержат другие объекты.. Контейнер (container) — это любой объект, содержащий один или несколько других объектов. В данном примере Applicationсодержит объект, на который ссылается ActiveWorkbook, содержащий в свою очередь, коллекцию объектов Worksheets. Все контейнерные объектные ссылки соединяются вместе с помощью точки-разделителя (.) для образования одного объектного выражения. Объект Application включает в себя коллекцию (семейство) объектов Книга (Workbook). Семейство книг называется Workbooks (в конец добавляется буква “s” в английском языке это обозначает множественное число). Обратиться с конкретной книге в приложении можно указав название семейства – Workbooks и в скобках имя или номер книги. Например, Workbooks(“Книга.xls”) или Workbooks(1). Объект Workbook является частью семейства Workbooks, хотя семейство Workbooks тоже является объектом. Кроме того, существует еще объект ActiveWorkbook – активная книга, который тоже является свойством объекта Application. Объекты и ActiveWorkbook являются одиночными объектами. Объект Workbooks - семейство. Объект Workbook содержит набор свойств объектов, которые будут перечислены ниже: · объект семейство (коллекция) Worksheets – это рабочие листы конкретной рабочей книги. · объект семейство Sheets – это рабочие листы в активной рабочей книге. · объект семейство Windows – это все окна в конкретной рабочей книге. · объект ActiveSheet - это активный рабочий лист в активной рабочей книге. Объект Worksheet является рабочим листом - элементом семейства Worksheets, но чтобы обратиться к конкретному листу из семейства надо указать имя или номер рабочего листа в коллекции. Например Worksheets(”Лист1”) или Worksheets(2). Задание 1 Написать макрос, который открывает книгу “Сотрудники”, создает новую книгу “Копия” и копирует из книги “Сотрудники” лист “Штат” после первого листа книги “Копия”. Предполагается, что книга “Сотрудники” находится в той же папке, что и файл с книгой, содержащей макрос. Задание 2 Переставить листы в обратном порядке. Обработчики событий Событие — это действие, распознаваемое объектом, для которого можно запрограммировать отклик. Например, в качестве события можно использовать открытие или закрытие документа, щелчок мыши, нажатие клавиши. Набор действий или повторяющихся явлений, которые можно сопоставить с кодом VBA, называется событиями, а специальный тип процедуры, которая выполняется при возникновении события, называется обработчиком событий. Обработать можно события следующих обьектов Excel:
Обработчики событий дают возможность привязать свой код к действиям пользователя, например к открытию или закрытию книги, активации таблицы, сохранению документа... Обработчики событий создаются с модулях лисов или книги (в зависимости от того, с каким объектом будет связано это событие. Чтобы создать процедуру обработки события, откройте редактор Visual Basic (Alt + F11), выберите например Лист1 и из двух раскрывающихся списков сверху выберите объект и событие. Редактор автоматически создаст процедуру для обработки события. Вам остается только написать в ней свой код (см. рисунок). Однако в некоторых ситуациях события для объектов не появляются в окне редактора кода (например, это справедливо для очень важного объекта Application). В этом случае необходимо явно объявить этот объект с событиями — при помощи ключевого слова WithEvents, например так: Public WithEvents App As Word.Application Делается это в области объявлений модуля (Declarations). После этого в редакторе кода Visual Basic появляется новый объект App со всеми необходимыми событиями.
Многие события имеют параметры. Это выглядит вот так: Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean) Здесь Target - диапазон ячеек, подвергшийся процедуре правого клика, Cancel - параметр, позволяющий отменить событие, если установить его в True. События объекта Application
События объекта Workbook
События объекта Worksheet
Задание 3 При открытии книги открывать файл Макросы.xls.
Задание 4 При активации “Лист4” и “Лист5” сделать видимым “Лист5”. При активации других листов “Лист5” становится невидимым. Для этой задачи надо выбрать событие активации листа но для книги, а не для Листа 4 и Листа 5, чтобы можно было анализировать состояние одних листов и управлять свойствами других листов.
Задание 5 При активации “Листа 3” запрашивать пароль. Если пароль правильный, строки отображаются и с листа снимается защита. Если пароль не совпадает со значением в ячейке AH1 этого листа, оставить скрытыми все строки и защищенным лист. Проверить корректность работы программы и исправить ошибки. После работы с листом надо привести Лист 3 в первоначальное состояние, т.е. скрыть строки и защитить лист. Для этого надо использовать событие деактивации листа. Задание 6 Если на листе поместить курсор в ячейку H6 Лист очищается.
Задания для самостоятельной работы Вариант № 1 1. Создать книгу под именем Данные.xls. В этой книге создать таблицу с 2 столбцами – ФИО, Должность и 4 строками. Написать макрос, который открывает эту книгу и после последней строки дописывает Вашу фамилию. 2. Создать обработчик, в котором при активизации листа, лист следующий за ним скрывается, а при уходе с этого листа, снова открывается.
Вариант № 2 1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги и дает такое же имя первому листу этой книги. 2. Создать обработчик в котором при открытии книги все листы сортируются в обратном порядке.
Вариант № 3 1. Написать макрос, который создает новую книгу под именем Итоги.xls и изменяте названия ее листов на 1, 2 и 3. 2. Создать обработчик, в котором при изменении данный в ячейке F3 этот лист перемещается в конец.
Вариант № 4 1. Создать книгу под именем Пример.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в книгу, содержащую данный макрос. 2. Создать обработчик, в котором при изменении данных в последней заполненной ячейке столбца B эта ячейка окрашивается черным цветом. После выхода из этой ячейки возвращается в прежнее состояние.
Вариант № 5 1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги, а затем добавляет в конец этой книги еще 3 листа. 2. Создать обработчик, в котором при перемещении на лист 4 создается новый лист и в ячейке A1 нового листа появляется слово «Привет».
Вариант № 6 1. Написать макрос, который создает новую книгу под именем Листы.xls и удаляет 1 и 3 листы этой книги и добавляет в начало новый лист. 2. Создать обработчик, в котором при создании нового листа этот новый лист становится первым.
Вариант № 7 1. Создать книгу под именем Проба.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в новую книгу. 2. Создать обработчик, в котором при создании нового листа этот лист получает в названии индекс этого листа.
Вариант № 8 1. Создать книгу под именем Данные.xls. В этой книге создать таблицу с 2 столбцами – ФИО, Должность и 4 строками. Написать макрос, который открывает эту книгу и после последней строки дописывает Вашу фамилию. 2. Создать обработчик, в котором при открытии книги первый и второй лист скрываются, а при активизации Листа 3 они снова отображаются.
Вариант № 9 1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги и дает такое же имя первому листу этой книги. 2. Создать обработчик, в котором на Листе 3при изменении данных ячейке A1 весь лист становится черным, при уходе с Листа 3 все возвращается в первоначальное состояние.
Вариант № 10 1. Написать макрос, который создает новую книгу под именем Итоги.xls и изменяет названия ее листов на 1, 2 и 3. 2. Создать обработчик, для Листа 2в котором при перемещении в любую ячейку столбца D этот столбец скрывается. При уходе с листа столбец открывается
Вариант № 11 1. Создать книгу под именем Пример.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в книгу, содержащую данный макрос. 2. Создать обработчик, в котором при активации листа ширина столбцов с A до H становится равным 1 символ. При уходе с листа ширина этих столбцов становится равной 8 символов.
Вариант № 12 1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги, а затем добавляет в конец этой книги еще 3 листа. 2. Создать обработчик, в котором при изменении данных в 10 ряду. Шрифт во всем ряду становится белого цвета. При ухода курсора из этого ряда шрифт становится черным.
ПРИЛОЖЕНИЕ ОБЪЕКТ APPLICATION Объект Application - это главный (корневой) объект в иерархии объектов Excel, представляющий само приложение Excel. Он имеет огромное число свойств и методов, позволяющих установить общие параметры приложения Excel. Кроме того, объект Application через свойство WorksheetFunction предоставляет возможность использовать в коде все встроенные функции рабочего листа. Это семейство возвращает WorksheetFunction объект, являющийся контейнером всех функций рабочего листа. Например, в следующем примере находится максимальное знчение из диапазона А1: А4: Макс=Application.WorksheetFunction. Max(Range(" А1: А4" )) Функции рабочего листа можно включать в код непосредственно через объект Application, опуская свойство WorksheetFunction. Например, в следующем примере переменной Pi присваивается значение Пи, а переменной Сумма присваивается значение суммы из диапазона А1: А4: Pi = Application.Pi() Сумма = Application.Sum(Range(" A1: А4" )) |
Последнее изменение этой страницы: 2016-08-31; Просмотров: 1338; Нарушение авторского права страницы