ОСНОВЫVBA
Программирование в Excel, в основном, сводится к управлению объектами. Эта задача выполняется с помощью инструкций, введённых на языке, понятном Excel.
Visual Basic For Application (далее VBA) – немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а так же во многие другие программные пакеты, такие как AutoCAD, WordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic.
VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к Visual Basic, но может выполняться лишь в рамках приложения, в которое он встроен. Кроме того, он может использоваться для управления одним приложением из другого, с помощью OLE Automation (например, таким образом можно создать документ Word на основе данных из Excel). В будущем Microsoft планирует заменить VBA на Visual Studio Tools for Applications (VSTA) — инструментарий расширения функциональности приложений, основанный на Microsoft.NET.
VBA в настоящее время входит в состав всех приложений Microsoft Office и даже приложений других компаний. Следовательно, овладев VBA для Excel, можно сразу перейти к созданию макросов для других программных продуктов Microsoft (равно, как и приложений других компаний). Более того, можно создавать полноценные программные продукты, одновременно использующие функции самых разных приложений.
Объектные модели
Секрет использования VBA заключается в правильном понимании объектной модели в каждом отдельном приложении. Следует отметить, VBA всего лишь управляет объектами, а у каждого программного продукта (Excel, Word, Access, PowerPoint и т.п.) своя объектная модель. Приложением можно управлять программным образом только с помощью объектов, которые представлены в этом приложении.
|
Например, в объектной модели Excel представлено несколько мощных объектов анализа данных, например, рабочие листы, диаграммы, сводные таблицы, сценарии, а также многочисленные математические, финансовые, инженерные и общие функции. С помощью VBA можно работать с этими объектами и разрабатывать автоматизированные процедуры.
Предназначение VBA:
1.Действия в VBA осуществляются в результате выполнения кода VBA.
2. Разработчик создаёт (или записывает) программу VBA, которая сохраняется в модуле VBA
Модуль VBA состоит из процедур.
Процедура, по существу, представляет собой элемент компьютерной программы, выполняющей определенное действие. Ниже приведен пример простой процедуры под названием Test: она вычисляет сумму, а затем отображает результат в окне сообщений:
Sub Test ()
Sum =1+1
MsgBox "Ответ: " & Sum
End Sub
Кроме процедур Sub, в модуле VBA может использоваться второй тип процедур — функции.
Процедура функции возвращает одно значение (или массив). Функция может быть вызвана из другой процедуры VBA или использоваться в формуле рабочего листа. Ниже приведен пример функции с названием AddTwo:
Function AddTwo(arg1, arg2)
AddTwo = arg1 + arg2
End Function
Excel позволяет управлять более, чем ста классами объектов, включая рабочую книгу, рабочий лист, диапазон ячеек рабочего листа, диаграмму и нарисованный прямоугольник. В распоряжении разработчика находятся и другие объекты, с которыми можно работать в VBA.
Классы объектов
Классы объектов в VBA организованы в иерархическую структуру.
|
Объекты могут быть контейнерами для других объектов. Например, Excel — это объект под названием Application, он содержит другие объекты, например, Workbook (Рабочая книга).
Объект Workbook может состоять из других объектов, например, Worksheet (Рабочий лист) и Chart (Диаграмма).
Объект Worksheet также содержит объекты, например, Range (Диапазон), PivotTable (Сводная таблица) и т.д. Организацию таких объектов называют объектной моделью Excel.
Одинаковые объекты формируют коллекцию.
Например, коллекция Worksheets состоит из всех рабочих листов конкретной рабочей книги, а коллекция CommandBars — из всех объектов CommandBar. Коллекции — это объекты в себе.
При ссылке на объект, вложенный в другой объект, положение в иерархической структуре объектной модели задается с помощью точки-разделителя.
Например, на рабочую книгу с названием Книга1.xls можно сослаться следующим образом:
Application. Workbooks(«Книга1.xls»)
Это ссылка на рабочую книгу Книга1.xls в коллекции Workbooks. Коллекция Workbooks находится в объекте Application. Переходя на следующий уровень, можно сослаться на лист под названием «Лист1» в книге Книга1.xls:
Application. Workbooks («Книга1.хls»).Worksheets («Лист1»)
Сослаться на ячейку, перейдя на один уровень ниже, следующим образом:
Application.Workbooks(«Книга1.xls»).Worksheets(«Лист1»).Range(«А1»)
При опущенной ссылке на объект Excel по умолчанию используются активные объекты. Если книга Лист1 — активная рабочая книга, то предыдущую ссылку можно упростить: Worksheets («Лист1»).Range(«А1»)
Если лист «Лист1» — активный, то ссылку можно упростить еще больше:
Range(«A1»)
Свойства объектов
Свойство можно считать параметром или настройкой объекта. Например, объект диапазона имеет такие свойства, как Value (Значение) и Name (Имя). Объект диаграммы обладает такими свойствами, как HasTitle (Заголовок) и Туре (Тип). Разработчик вправе использовать VBA, чтобы задать свойства объектов и их изменить.
|
Свойства в программном коде отделяются от названия объекта точкой.
Например, можно сослаться на значение в ячейке А1 листа «Лист1» следующим образом:
Worksheets («Лист1»).Range(«А1»).Value
Пользователь вправе присваивать значения переменным VBA. Переменную можно считать константой, которая используется для хранения конкретного значения.
Чтобы присвоить значение ячейки А1 листа Лист1 переменной с названием Interest, можно использовать следующий оператор VBA:
Interest = Worksheets («Лист1»).Range («А1»).Value
Методы
Метод - это действие, которое выполняется над объектом. Например, один из методов объекта Range — ClearContents. Этот метод удаляет содержимое диапазона ячеек.
Методы вводятся после названия объекта с методом, в роли разделителя выступает точка.
Например, для удаления содержимого ячейки А1 активного рабочего листа используется следующая команда:
Range(«А1»).ClearContents
Иерархия объектов
Объект Application (то есть Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:
Workbooks (коллекция всех объектов Workbook — рабочих книг);
Windows (коллекция всех объектов window — окон);
Addlns (коллекция всех объектов Addln — надстроек).
Некоторые объекты могут содержать другие объекты. Например, коллекция Workbooks состоит из всех открытых объектов Workbook, а объект Workbook включает другие объекты, некоторые из которых представлены ниже;
Worksheets (коллекция объектов Worksheet — рабочих листов);
Charts (коллекция объектов Chart — диаграмм);
Names (коллекция объектов Name — имен).
Каждый из этих объектов, в свою очередь, может содержать другие объекты. Коллекция Worksheets состоит из всех объектов Worksheet рабочей книги Workbook. Объект Worksheet включает другие объекты, среди которых следующие;
Chartobjects (коллекция объектов Char tobject — элементов диаграмм);
Range — диапазон;
PageSetup — параметры страницы;
PivotTables (коллекция объектов PivotTable — сводных таблиц).
Одной из ключевых концепций в программировании на языке VBA являются коллекции. Коллекция — это группа, объектов одного класса [и сама коллекция тоже является объектом). Как указывалось выше: Workbooks — это коллекция всех открытых в данный момент объектов Workbook. Worksheets — коллекция всех объектов Worksheet, которые содержатся в конкретном объекте Workbook. Разработчик может одновременно управлять целой коллекцией объектов или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, необходимо ввести название или номер объекта в скобках после названия коллекции:
Worksheets («Лист1»)
Если лист «Лист1» — это первый рабочий лист в коллекции, то можно использовать следующую ссылку:
Worksheets (1)
На второй лист в рабочей книге Workbook можно сослаться соответственно следующим образом:
Worksheets (2)
Кроме того, существует коллекция с названием Sheets, состоящая из всех листов рабочей книги, рабочих листов и листов диаграмм. Если «Лист1» — первый лист в книге, то на него можно сослаться так
Sheets (1)
Свойства объектов
Все объекты обладают свойствами. Например, объект Range обладает свойством с названием Value. Например, можно создать оператор VBA, чтобы отобразить свойство Value или задать свойству Value определенное значение. Ниже приведена процедура» использующая функцию VBA MsgBox для отображения окна, в котором представлено значение ячейки А1 листа Лист! активной рабочей книги.
Sub ShowValue()
HsgSox Worksheets(«Лист1»).Range(«А1»).Value
End Sub
Код предыдущего примера отображает текущее значение свойства Value для конкретной ячейки — А1 рабочего листа Лист1 активной рабочей книги. Однако если в активной книге отсутствует лист с названием Лист1, то макрос выдаст ошибку.
MsgBox — полезная функция, часто используемая для отображения результатов выполнения операторов VBA.
Также разработчик вправе изменять свойство Value. Ниже приведена процедура по изменению значения ячейки А1 путем определения значения свойства Value:
Sub ChangeValueO
Worksheets["Лист1"),Range("Al").Value = 123
End Sub
После выполнения этой процедуры ячейка A1 листа Лист1 получает значение 123. Можно ввести описанные процедуры в модуль и протестировать их.
Многие объекты имеют свойство по умолчанию. Для объекта Range свойством по умолчанию является Values. Следовательно, выражение.Value в приведенном выше коде можно опустить, и ничего не изменится. Однако лучше включать ссылку на свойство, даже если оно используется по умолчанию.
Методы объектов
Кроме свойств, объекты имеют методы. Простой пример - использование метода Clear по отношению к диапазону ячеек. После выполнения этой процедуры ячейки А1:СЗ листа Лист1 станут пустыми, и дополнительное форматирование ячеек будет удалено.
Sub SapRange ()
Worksheets(«Лист1»).Range(«Al:C3»).Clear
End Sub
Если необходимо удалить значения в диапазоне, но оставить форматирование, можно использовать метод ClearContents объекта Range.
Многие методы получают аргументы, определяющие выполняемые над объектом действия более детально. Далее приводится пример, в котором ячейка А1 копируется в ячейку В1 с помощью метода Сору объекта Range.
В данном примере метод Сору получает один аргумент (адрес ячейки, в которую следует скопировать данные):
Sub CopyOnet ()
Worksheets(«Лист1»).Range(«Al»).Copy _
Worksheets(«Лист1»).Range(«В1»)
End sub
РАЗДЕЛ I. ПРОЕКТНАЯ ЧАСТЬ
1.1 Описание предметной области
В данной курсовой работе рассматривается создание автоматизации салона сотовой связи. Такая база данных удобна по следующим причинам:
- она обеспечивает удобный метод поиска информации о предлагаемом товаре и о клиентах;
- с ее помощью можно выполнять различного рода анализ, например, определять отбор по цене в диапазоне от минимальной цены до максимальной цены;
- пользуясь хранящейся в ней информацией, можно быстро формировать отчеты по выбранным заказам и проданным товаром.
В базе данных хранят сведения о сотрудниках, клиентах, заказах, различного рода информации предлагаемых товарах и т. д.
В данной части будет рассмотрена реализация автоматизированной информационной системы в языке программирования Visual Basic For Application (VBA). Для того чтобы начать разработку базы данных, необходимо создать таблицы, которые получились в результате проектирования.
Рассмотрим получившийся проект.
В таблице «Товар» отображаются поля:
· Шифр;
· Наименование;
· Производитель;
· Характеристика;
· Количество;
· Дата приобретения;
· Цена.
В таблице «Клиент» отображаются поля:
· ФИО;
· Адрес;
· Телефон;
· Дата;
· Выбор;
· Вид;
· Гарантия;
· Продавец.
В таблице «Сотрудник» отображаются поля:
· ФИО;
· Должность
· Адрес;
· Телефон.