Microsoft Excel

трюкиприёмырешения

Объекты Microsoft Excel, которые позволяют работать с информацией

В большинстве примеров вводной части раздела «Офисные решения» мы рассматривали возможности VBA без связи с информацией, находящейся на рабочем листе. Лишь несколько ситуаций продемонстрировали синтаксические конструкции, которые позволяли извлекать и записывать данные в ячейки листов Microsoft Excel. В этой части раздела мы детально рассмотрим объекты, которые позволяют работать с информацией, содержащейся в рабочих книгах Microsoft Excel. Приводимые здесь примеры, являются фундаментом для более сложных разработок, рассматриваемых в последующих статьях.

Файл рабочей книги Excel представлен в объекте Workbook, который имеет большое количество свойств и методов. Справочная информация по ним присутствует как в электронной справке по VBA, так и в большом количестве изданий по данной теме. Мы не будем углубляться в чисто справочную информацию и во вводной части рассмотрим только те сведения, с которыми далее встретимся в приведенных примерах.

Так, свойство Worksheets объекта Workbook представляет семейство всех рабочих листов книги. И для обращения к конкретному листу книги с помощью этого свойства следует просто указать в качестве параметра номер листа, что выглядит так: Worksheets(номер листа). В качестве номера листа выступает просто его порядковый номер в книге Microsoft Excel. Другой вариант заключается в указании в качестве параметра названия листа: Worksheets ("Название листа"). Одним из наиболее часто программируемых событий, связанных с книгой в целом, является событие Open, которое происходит при открытии рабочей книги. Так, если мы хотим, чтобы при открытии книги выполнялись определенные действия, следует расположить необходимый программный фрагмент внутри процедуры Workbook_Open. Программирование этого события будет рассматриваться в части приводимых далее примеров.

Следующим объектом в порядке иерархии после Workbook является объект Worksheet, представляющий рабочий лист. Из многообразия методов этого объекта широко используется Activate, который существует и для семейства листов Worksheets, о котором мы уже сказали выше. Например, если при работе на первом листе книги Microsoft Excel требуется активизировать второй лист, то синтаксис программной строки в процедуре (выполняться она может, например, по щелчку на кнопке) должен выглядеть следующим образом: Worksheets(2).Activate. Если же требуется активизировать лист, называемый Информация о фирмах, то следует написать в процедуре такую конструкцию: Worksheets("Информация о фирмах").Activate.

Пользователи Microsoft Excel знают, что это приложение предлагает сервис, связанный с защитой рабочих книг и составляющих их листов. Так, метод Protect (семейства Worksheets) обеспечивает защиту рабочего листа от внесения в него изменений. Для программной установки защиты с паролем (пароль указывается в параметре Password этого метода) листа с названием Сотрудники можно поступить следующим образом:

1
2
Worksheets("Сотрудники").Protect Password:="zv2345", _
DrawingObjects:=True, Contents:=True, Scenarios:=True

Здесь и далее символ «нижнего подчеркивания» является информацией для Microsoft Visual Basic о том, что следующая строка является продолжением текущей.

Существует и соответствующий метод Unprotect, позволяющий снять защиту с листа. Для только что установленной защиты метод ее снятия: Worksheets("Сотрудники").Unprotect Password:="zv2345". Любая практическая работа в Microsoft Excel, так или иначе, касается информации в ячейках. Для работы с ячейками в VBA существует объект Range (в переводе — диапазон ячеек). Использование этого объекта требует задания параметра диапазона ячеек, которые нас интересуют. Это может быть одна ячейка или группа ячеек. Так, если мы напишем Worksheets(1).Range ("С5").Value = 7, то это означает, что в ячейку С5 первого листа мы программно записываем число 7. Здесь используется основное свойство объекта RangeValue. Буквально оно означает значение или содержимое ячейки (группы ячеек). В следующей конструкции в совокупность ячеек программно вводится одинаковый набор букв АБСДЕ: Worksheets(1).Range("A1:А3").Value = "АБСДЕ".

Другой способ работы с ячейками реализуется с помощью объекта Cells, и синтаксис его использования выглядит следующим образом: Cells (номер строки, номер столбца). Фактически с точки зрения их использования рассматриваемые объекты похожи. Например, получить в переменной Z значение ячейки D5 можно двумя разными способами: Z = Range("D5").Value или Z = Cells(5,4).Value. В качестве примера программной конструкции на данную тему можно привести следующее присвоение:

1
2
Worksheets(2).Range("C5").Value = _
Worksheets(3).Cells(5, 1).Value.
Top