Из всех офисных программ для создания пользовательских приложений чаще всего используется Excel. Этому есть два объяснения. Во-первых, данный пакет предназначен для широкого круга прикладных задач по обработке данных. Во-вторых, фактически именно с него началась история современного VBA. Всего несколько строчек кода, включенных в Excel, смогут создать программу для выполнения серьезных вычислений и оригинального анализа с использованием графики и выдачей отчетов. Однако для разработки собственных приложений необходимы следующие условия:
§ нужно научиться работать с Excel в его традиционном варианте, что позволит с помощью минимального программного кода использовать максимум встроенных возможностей пакета. Чем лучше вы знаете, сам продукт, тем проще создавать приложения;
§ требуется освоить иерархическую модель объектов Excel вместе с соответствующими свойствами, методами и событиями, через которые производится управление средой Excel при разработке пользовательского приложения;
§ следует изучить среду разработки VBA, где вы можете писать код программ, создавать пользовательские формы и отлаживать свое приложение.
Excel состоит из более чем 100 объектов - от ячеек и диаграмм до рабочих книг и электронных таблиц. Каждый объект имеет набор свойств, управляющих его внешним видом и поведением, а также содержит методы, обеспечивающие определенные действия с помощью этого объекта. Некоторые объекты имеют события.
Например, объект Workbook представляет собой конкретный файл Excel. Он имеет свойства Name (имя файла), Path (имя каталога) и Author (имя автора файла). Метод Save сохраняет файл. Вот как выглядит использование этих методов:
' задает имя автора
Workbooks ("Book1.xls"). Author = "Bill"
Существует два способа ссылок на объекты: можно сослаться непосредственно на имя одного из объектов или на индекс в коллекции. Согласно самому простому определению коллекция - это группа похожих объектов. Все объекты Excel разделяются на два класса: единичные объекты и объекты в коллекции. Для первых ссылка осуществляется непосредственно по их имени, для вторых - по индексу в данной группе. Коллекции предоставляют возможность иерархической организации объектов. Например, коллекция Workbooks содержит все объекты Workbook. Чтобы сослаться на конкретную рабочую книгу, можно указать имя:
Workbooks("Book1.xls")
или номер
Workbooks(1)
Четыре ключевых объекта
Ключевыми объектами в Excel являются Application, Workbook, Worksheet и Range, которые образуют иерархию:
Объект Application представляет собой саму программу Excel. Все приложения Excel/VBA реализуются в Excel, поэтому можно рассматривать этот объект в качестве среды, в которой они осуществляются. Любые установки свойств или вызовы методов, совершенные с объектом Application, воздействуют на весь Excel и соответственно на все приложения VBA, выполняемые в его среде. Например, используя объект Application, можно сделать невидимой строку состояния Excel и изменить его заголовок:
Application.DisplayStatusBar = False
Application.Caption = "Пользовательское приложение"
Объект Workbook является файлом рабочей книги Excel. В терминах разработки приложений его можно рассматривать в качестве механизма доставки или контейнера для любого приложения VBA, созданного при помощи Excel. Любые установки свойств или вызовы методов, совершенные с объектом Workbook, воздействуют на данное приложение. Например, для установки защиты и сохранения рабочей книги можно использовать такой код:
With Application.Workbooks(1)
.Protect
.Save
End With
Объект Worksheet, содержащийся в Workbook, служит нескольким целям в приложении Excel/VBA. Он содержит ячейки, куда пользователь может включать формулы для выполнения вычислений. При этом свойства и методы объекта Worksheet обрабатывают электронную таблицу как единое целое. Например, следующий код изменяет имя электронной таблицы(рабочий лист) и делает ее невидимой:
With Application.Workbooks(1).Worksheets(1)
. Name = "Работа с ценными бумагами"
.Visible = False
End With
Объект Range представляет собой одну или несколько ячеек в электронной таблице. Он используется в основном для хранения и вывода фрагментов данных: чисел, строк или формул. Ячейки электронной таблицы, которые представлены в объекте Range, обладают широкими возможностями. Например, пользователь способен получить доступ из ячейки к более чем 400 встроенным функциям Excel и вызвать функции VBA. Можно также установить связи с другими ячейками в той же самой электронной таблице, других электронных таблицах или других рабочих книгах. Гибкость и мощность объекта Range позволяют совершенствовать встроенный вычислительный блок Excel и создавать более сложные приложения для анализа данных.
Объект Application
Объект Application –это главный (корневой) объект в иерархии объектов Excel, представляющий само приложение Excel.Он имеет большое число свойств и методов, позволяющих установить общие параметры приложения Excel.Перечислим основные его свойства и методы.
Основные свойства объекта Application
1 ActiveWorkbook, ActiveSheet, ActiveCell-возвращают активную,соответственно,рабочую книгу,рабочий лист и ячейку.В следующем примере в активной ячейке вводиться срока “Отчет”:
ActiveCell.Value=”Отчет”
2 Caption-возвращает или устанавливает текст из заголовка главного окна Excel.В следующем примере в качестве заголовка окна приложения устанавливается текст “Отчет за май”
Application.Caption=”Отчет за май”
3.DisplayFormulaBar-логическое свойство, регулирующее отображение строки формул.Например в следующем коде строка формул не отображается: Application.DisplayFormulaBar
4 DisplayStatusbar- логическое свойство, регулирующее отображение строки состояния
5 Path-возвращает путь к файлу Excel.exe
6 StatusBar- возвращает или устанавливает текст, выводимый в строке состояния
7 Version –возвращает номер текущей версии Excel.Используется для проверки применения корректной версии.Например:
If Application.Varsion <> “9.0” Then Exit Sub
Объект Workbook и семейство Workbooks
В иерархии Excel этот объект идет сразу после объекта Application и представляет файл рабочей книги.
Основные свойства объекта Workbook и семейства Workbooks
1 ActiveSheet – возвращает активный лист книги
2 Name –возвращает или устанавливает имя книги
З Path-возвращает полное имя папки, в которой находиться данная книга
4 Saved-логическое свойство, которое устанавливает, не производились ли изменения в книге со времени его последнего сохранения
Основные методы объекта Workbook и семейства Workbooks
1 Activate – активизирует рабочую книгу так, что ее первый рабочий лист становится активным.Например:
Workbooks(“Отдел кадров”).Activate
2 Protect- защищает рабочую книгу от внесения в нее изменений
3 Close –закрывает книгу
4 Open- открывает существующую книгу.Синтакис:
Open(FileName), где FileName –имя открываемого файла
Например:
Open(“Storage.xls”)
5.Save-сохраняет книгу.например можно сохранить активную книгу: Application.ActiveWorkbook.Save
Основными событиями этого объекта являются Open (происходит при открытии книги).Например, напишем процедуру обработки события Open объекта Workbook при ее открытии.При этом мы выведем некоторое сообщение:
Sub Workbook_Open()
MsgBox(“Привет”)
End Sub
Объект Worksheet и семейство Worksheets
В иерархии Excel объект WorkSheet идет сразу после объекта Workbook и представляет рабочий лист
Основные свойства объекта Worksheet и семейства Worksheets
1 Name- возвращает или устанавливает имя рабочего листа
2 Cells –Возвращает семейство всех ячеек рабочего листа или объект Range-конкретную ячейку, если в скобках указаны номер строки и столбца, на пересечении которых ячейка расположенна.Например:
Worksheets(1).Cells.Interior.ColorIndex=3 –окрашивает все ячейки первого рабочего листа в красный цвет.
Worksheets(1).Cells(1,2).Value=”Привет” –выводит строку “Привет” в ячейку,расположенную в первой строке во втором столбце
3 Columns, Rows- возвращают семейство всех столбцов и строк рабочего листа или конкретный столбец, если в скобках указан индекс.Например
WorkSheets(1).Columns(2)- возвращает второй столбец
Основные методы объекта Worksheet и семейства Worksheets
1 Activate- активизирует указанный рабочий лист.Например
Worksheets(1).Activate
2 Delete –удаляет указанный рабочий лист. Например
Worksheets(1).Delete
3 Protect - защищает рабочий лист от внесения в нее изменений
Основными событиями этого объекта являются Activate (происходит при активизации рабочего листа) и Deactivate (происходит при деактивизации рабочего листа).Например, напишем процедуру обработки события Activate объекта Worksheet при ее активизации.При этом мы выведем некоторое сообщение:
Sub Worksheet_Activate()
MsgBox(“Привет”)
End Sub
Объект Range
В иерархии Excel объект Range (диапазон), один из ключевых объектов VBA, следует сразу после объекта Worksheet. Объект Range не является элементом никакого семейства объектов.
Если в диапазоне указывается только имена столбцов и строк, то объект Range задает диапазон, состоящий из указанных столбцов и строк.Например, Range(“A:C”) задает диапазон состоящий из столбцов A,B,C. Range(“A:A”) задает диапазон состоящий из столбца А, Range(“2:2”) задает диапазон состоящий из второй строки.
Для того чтобы сослаться на конкретный диапазон ячеек достаточно указать адрес его верхней левой ячейки и адрес его нижней правой.Например, Range(“A1:B3”) задает диапазон состоящий из ячеек A1,A2,A3,B1,B2,B3.
Ячейка-это частный случай диапазона, который состоит из единственной ячейки.Например Range(“A1”) задает диапазон состоящий из ячейки A1.
Основные свойства объекта Range
1 Value- возвращает или устанавливает значение в ячейках диапазона.Например
x=Range(“C1”).Value - Некоторой переменной х присваивается значение из ячейки C1
2 Name- возвращает или устанавливает имя диапазана
3 Columns, Rows- возвращают все столбцы или строки в диапазоне.Например
Worksheets(1).Range("A1:B3").Columns.Value = 2 – во всех столбцах диапазона
A1:B3 выводится число 3
4 Interior- возвращает объект Interior, представляющий собой фон ячейки.Среди свойств объекта Interior
отметим только одно –ColorIndex-цвет фона, которое задается целыми числами от 1 до 56.Например
Range(“A1”).Interior.ColorIndex=3 - Фон ячейки A1 заполняется красным цветом
5 Font –возвращает объект Font, представляющий собой шрифт.Объект Font имеет свойства Name(строка, указывающая имя шрифта) и т.д.
6 HorizontalAlignment- Горизонтальное выравнивание в ячейках диапазона.Допустимы значения xlCenter (Выравнивание по центру),xlRight(Выравнивание по правому краю) и т.д.
Основные методы объекта Range
1 ClearFormats и ClearContents- очищают, соотве-но, форматы и содержимое в ячейках диапазона.Например
Range(“A1:D2”).ClearContents
2 Select- выделение диапазона