Tw-city.info

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Объектно ориентированное программирование в vba

Объектно ориентированное программирование в vba

Программирование на VBA в Microsoft Office.

(не для чайников:-(
Здесь мы рассмотрим технологию объектно-ориентированного программирования (ООП) на Visual Basic for Applications. Описывать преимущества данной технологии нет смысла — тот, кто не пробовал ее применять на практике, этого все равно не поймет. Поэтому сразу к делу.

Запустите Word или Excel, откройте документ со своим приложением и запустите редактор Visual Basic (для начинающих — комбинация Alt+F11).
В окне проекта кликните правой кнопкой мыши и во всплывающем меню выберите пункт «Вставить->» и далее «Модуль класса» — объекты по аналогии с C/C++ называются классами, и каждый класс хранится в отдельном модуле класса.
В дереве объектов выделите свой класс и в окне свойств наберите желаемое имя для него, например, MyClass. Это имя Вы будете использовать в дальнейшем в своих программах для создания экземпляров класса — переменных типа MyClass.
Теперь дважды кликните по имени модуля класса в окне проекта — откроется пустое окно для ввода исходного текста.
Все процедуры и функции, описанные в модуле класса, будут являться методами этого класса, соответственно, все переменные, описанные на уровне модуля, будут являться свойствами класса.
Инкапсуляция осуществляется применением ключевых слов Public и Private перед описанием свойств и методов, а в остальном — все то же самое, например:

Public hFile As Long ‘- свойство — ссылка на открытый файл
Private ownFile As String ‘- свойство — имя файла
Public Function getDataRecord(NumRec As Long) As String ‘- метод — чтение записи из файла, параметр — номер записи.

Все свойства и методы, описанные как Public, будут доступны для изменения и вызова из программ, в которых они будут использоваться. В нашем примере метод getDataRecord может быть вызван из основной программы.
Свойство hFile также может быть использовано основной программой без ведома самого класса.
Соответственно, все описанное как Private будет скрыто от основной программы.
В примере свойство ownFile доступно для изменения только внутри самого объекта его методами, основная программа ни прямо, ни косвенно (объявлением одноименной переменной) не может изменять значение этого свойства.
Рассмотрим более необычные варианты объявлений. В большинстве случаев требуется, чтобы доступ к свойствам класса был разрешен исключительно с помощью методов, а в некоторых случаях свойств вообще фактически не существует, а значения должны вычисляться непосредственно в момент обращения.
Для этого в языке Visual Basic существует механизм описания таких свойств с помощью ключевого слова Property.
Свойства, при чтении значения которого должен вызываться метод вычисления или передачи этого значения, описываются следующим образом:

Property Get FileName() As String
‘код программы
‘поиска, вычисления
‘или передачи значения
FileName= ownFile ‘ — возврат значения
End Property

Свойства, при присваивании значения которым должен вызываться метод обработки этого значения, описываются аналогично, только с применением ключевых слов Property Let либо Property Set. Разница между ними состоит в том, что Property Let применяется для передачи значений стандартных и предопределенных программистом типов, а Property Let применяется для объектов Office и объектных переменных программы.

Property Let FileName (ByVal strFileName As String)
ownFileName = strFileName ‘ — присваивание строкового значения
End Property

Property Set SelectedSheet (ByVal CurrSheet As Object)
Set Area = CurrSheet ‘ — присваивание объекта
End Property

Для использования класса необходимо объявить переменную типа MyClass и затем создать экземпляр класса с помощью оператора new. Присваивание значений объектной переменной всегда предваряется оператором Set. Например:

Dim ObjVar As MyClass
Set ObjVar = New MyClass

Инициализация объекта при его создании и деинициализация при удалении осуществляются двумя предопределенными методами, которые можно переопределить, чтобы добавить свой код.

Private Sub Class_Initialize()
‘Код инициализации
End Sub

Private Sub Class_Terminate()
‘Код деинициализации
End Sub

К сожалению, в VBA не реализованы наследование и полиморфизм, но даже в таком «обрезанном» варианте применение ООП представляется более предпочтительным, нежели создание обычных процедур и функций.
При создании объемного приложения внутри документа Microsoft Office нередко наступает момент, когда стандартных средств языка Visual Basic не хватает для полноценных и более простых решений. Один из вариантов реализации программных задач заключается в вызове соответствующих функций Windows API.
Определение импортируемых функций ядра Windows, а также .DLL-библиотек в языке Visual Basic осуществляется оператором Declare, например:

Public Declare Function OemToCharBuffA Lib «User32» (ByVal src As String, ByVal Dest As String, ByVal cnt As Long) As Long

При этом перед каждым параметром необходимо ставить ключевое слово ByVal — передача параметра по значению. Проблемой иногда бывает необходимость передачи указателей на различные структуры.
Именно в таком варианте удобно применять объекты, скрывая от основной программы код вызова WinAPI и обработку громоздких структур данных, передаваемых через параметры, чтобы не «засорять» основные алгоритмы.
Рассмотрим реализацию варианта вызова диалогового окна Windows для выбора файла нужного типа. Вставьте в проект модуль класса и назовите его dlgFileOpen.
В окне исходного текста введите следующий код:

‘Определение типа необходимой структуры
Private Type OPENFILENAME
lngStructSize As Long — ‘Размер структуры
hwndOwner As Long — ‘Дескриптор окна владельца
hInstance As Long — ‘Дескриптор приложения
strFilter As String — ‘Строка фильтра
strCustomFilter As String — ‘Строка с выбранным фильтром
intMaxCustFilter As Long — ‘Длина буфера для строки выбранного фильтра ‘Всегда должна быть равна Len(strCustomFilter)
intFilterIndex As Long — ‘Индекс строки фильтра
strFile As String — ‘Полное имя выбранного файла (путь и файл)
intMaxFile As Long — ‘Длина буфера для полного имени файла ‘Всегда должна быть равна Len(strFile)
strFileTitle As String — ‘Имя выбранного файла
intMaxFileTitle As Long — ‘Длина буфера для имени выбранного файла ‘Всегда должна быть равна Len(strFileTitle)
strInitialDir As String — ‘Имя начального каталога (при открытии окна)
strTitle As String — ‘Заголовок диалогового окна
lngFlags As Long — ‘Флаги диалогового окна
intFileOffset As Integer — ‘Смещение имени файла
intFileException As Integer — ‘Смещение расширения файла
strDefExt As String — ‘Расширение файла по умолчанию
lngCustData As Long — ‘Данные для обработки
lngfnHook As Long — ‘Указатель функции обработки
strTemplateName As String — ‘Имя шаблона диалогового окна
End Type
‘Описание функций Win32 API как скрытых методов класса
Private Declare Function GetOpenFileName Lib «comdlg32» _
Alias «GetOpenFileNameA» (ofn As OPENFILENAME) As Boolean

Private Declare Function GetActiveWindow Lib «user32» () As Boolean

‘Переменная типа структуры — скрытое свойство класса
Private ownFileDlg As OPENFILENAME

‘Метод вызова диалогового окна.
‘Принимает параметры — строка фильтра, строка расширений,
‘начальный каталог, строка заголовка окна.
‘Возвращает полное имя файла.
Public Function OpenFile(szFilter As String, _
Optional szDefExt As String, _
Optional szInitDir As String, _
Optional szCaption As String) As String

‘Задание начальных значений полей структуры
With ownFileDlg
.hInstance = 0
.hwndOwner = GetActiveWindow()
.strFile = String(255, 0)
.intMaxFile = 255
.strFilter = szFilter
.intMaxCustFilter = Len(szFilter)
.strFileTitle = String(255, 0)
.intMaxFileTitle = 255
.strDefExt = szDefExt
.strInitialDir = szInitDir
.strTitle = szCaption
.lngFlags = OFN_FILEMUSTEXIST Or OFN_EXTENTIONDIFFERENT
.lngStructSize = Len(ownFileDlg)
End With

If GetOpenFileName(ownFileDlg) Then
OpenFile = ownFileDlg.strFile
End If

Для использования этого класса создайте форму — в окне проекта кликнуть правой кнопкой мыши и выбрать «Вставить->/ UserForm».
В окне свойств формы в свойстве (Name) укажите имя своего творения, пусть это будет ownMediaPlayer. Теперь в форме создайте строку ввода («Поле») и кнопку.
Дважды щелкните по кнопке и в окне исходного текста введите следующий код.

‘Описание экземпляра класса
Dim dlgFiler As dlgFileOpen

‘Инициализация класса
Private Sub UserForm_Initialize()
‘Создание экземпляра класса
Set dlgFiler = New dlgFileOpen
End Sub

‘Обработка события кнопки — нажатие
Private Sub CommandButton1_Click()
‘Присваивание значения полю ввода — полное имя файла
TextBox1.Value = dlgFiler.OpenFile(«WAV-Файлы» & _
vbNullChar & «*.WAV». «Выбирайте звуковой файл»)
End Sub

Использование такого объекта уже гораздо проще и, в отличие от предыдущего исходника, сохраняет читабельность основной программы.
При желании Вы можете дополнить объект своими методами, возвращающими более подробную информацию о последнем выбранном файле из структуры ownFileDlg. В этом случае наиболее удобно будет использовать объявления методов-свойств Property Get.
Чтобы увидеть форму с объектом в деле, прямо на листе Excel создайте кнопку, щелкните по ней правой кнопкой мыши и выберите «Исходный текст».
Внутри метода обработки события — нажатия кнопки введите строку запуска формы:

Тема урока: VBA – как язык объектно-ориентированного программирования (ООП).

Общие принципы построения VBA-программы.

·

скачать 2.5
электронные покупки

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

Читать еще:  Программа для программирования игр на андроид

Оператор — это наименьшая единица VBA — кода. Он предназначен для определения переменной, установки параметров или выполнения какого-либо действия в программе.

Процедура — это отдельная единица программного кода VBA, которую можно вызвать по имени для выполнения и которая может выполнять самостоятельно. Любая процедура содержит один или несколько операторов.

Модуль — это именованная единица, состоящая из одной или нескольких процедур и раздела объявлений, в котором объявляются переменные, константы и пользовательские типы данных, а также устанавливаются параметры компилятора.

Проект — включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретному документу, причём проект сохраняется вместе с самим этим документом.

Тема раздела: Основные понятия VBA.

Тема урока: VBA – как язык объектно-ориентированного программирования (ООП).

VBA– язык программирования. Он позволяет быстро получать результаты – конструировать профессиональные приложения, решающие практически все задачи, встречающие в среде Windows. При этом создание многих приложений с использованием VBA проще и быстрее, чем с применением других языков программирования.

VBA позволяет создавать клиент-серверные приложения, связывая компьютер со всем остальным миром, создавать универсальные, автоматизированные приложения на платформе MS Excel, MS Word, MS PowerPoint, MS Access. Приложения Word предназначено для создания документов, основные функции: ввод и редактирование текста, форматирование, помещение текста в таблицу и колонки, колонтитулы. Excel – приложения для работы с электронной таблицей, предназначенной для манипуляции с числами. Содержит большое количество формул, функций и диаграмм. Access – программа для управления базами данных. Система Access представляет средства для создания баз данных, их добавления и редактирования. PowerPoint – программа для подготовки различных презентаций. Основные функции: форматирование текста и рисунков, работа с элементами управления.

VBA относится к языкам объектно-ориентированного программирования (ООП). ООП – методика анализа, проектирования и написания приложений с применением объектов.

Прежде чем приступить к созданию программ на языке Visual Basic for Applications, необходимо познакомиться с общими концепциями объектно-ориентированного программирования. По мере того, как программы становились все более сложными и объемными, обработка ошибок становилась более сложной задачей. Поэтому у пользователей возникла потребность в новой парадигме. Избежать незапланированного взаимодействия удалось благодаря внедрению различных программных функций в целое множество независимых моделей, а затем сборке этих моделей при создании конечной программы. Суть парадигмы ООП: не программы управляют данными, а данные управляют программами.

Основные парадигмы ООП: объект, свойство, метод, событие, класс и семейство объектов.

При работе с любыми приложениями пакета, все, что видите и делаете, связано с объектами. Каждая панель инструментов и каждая ее кнопка является объектом.

Под объектом в ООП понимается абстрактный тип данных, состоящий как из данных, так и различных функций, управляющих этими данными. Вместе с данными, описывающими какое-то явление, храниться и программный код, описывающий его поведение. Все вместе называется объектом, а сам принцип объединения в единое целое данных и программного кода, описывающего поведенческие свойства, называется – инкапсуляцией.

С объектом неразрывно связан класс. Класс задает свойство и поведение объектов.Каждый объект является экземпляром какого-либо класса. Например, каждый рабочий лист МS Excel является объектом класса WorkSheet (рабочий лист), в объекте Document содержаться объекты Paragraph (абзац). Такой тип иерархии является важной частью объектной модели среды Office.

Класс содержит данные и функции, которые обрабатывают данные. Данные называются свойствами класса, а функции – методами класса. Свойства – способ хранения объектами своих данных. Одним из свойств объекта WorkSheet является его имя «ЛИСТ1». Каждая ячейка в рабочем листе Excel представлена объектом Range, для которого свойство Value определяет текстовое или числовое значение, свойство FormatNumber управляет способом отображения этих данных. Некоторые свойства доступны только для чтения, некоторые для чтения и записи; т.е. можно как читать, так и изменять их.

Методы воздействуют на объект. Например, конкретный лист можно сделать активным. Для этого следует вызвать для него метод Activate.

События возникают при работе с объектами. Например, при нажатии на клавишу или щелчке мышью на одной из кнопок на панели инструментов. При появлении события система посылает объекту сообщение, которое может быть обработано методом, создаваемым при разработке класса. Такие методы называют обработчиками событий или процедурами обработки события. События могут обрабатываться программами на VBA или операционной системой. При необходимости можно самим написать программу, реагирующую на события.

Механизмы ООП

В ООП принято выделять три основных механизма, лежащих в его основе:

Инкапсуляция – это механизм, связывающий вместе код и данные, которыми он манипулирует и одновременно защищает их от внешних помех и некорректного использования. Т.е. защитная оболочка, предохраняющая код и данные от изменений. В ООП основой инкапсуляции является – класс. Преимуществом VBA как языка программирования, является то, что пользователю нет необходимости создавать свои классы, поскольку можно использовать уже готовые.

Наследованием называется способность класса-потомка сохранять свойства и методы класса-родителя, другими словами понятие, поддерживающее концепцию иерархической классификации.

Полиморфизм – способность объекта принимать различные формы.

В рамки ООП удачно вписывается концепция визуального программирования. Все визуальные составляющие, такие как формы, элементы управления, меню и панели инструментов являются объектами со своими свойствами и методами. Эти объекты реагируют на определенные события. Например, форма – это объект класса UserForm. На форме мы также можем размещать другие объекты, называемые элементами управления: поля, списки, переключатели, кнопки и т.п.

При визуальном подходе к разработке форм не требуется программного задания их основных свойств (цвет, ширина, высота и.т.п.). Эти свойства мы можем задать при помощи мыши (ширину и высоту формы путем операции перетаскивания маркеров) или установить их в окне свойств (название формы, цвет фона формы и т.д.). Таким образом, визуальное программирование делает проектирование интерфейса программы намного более быстрым и наглядным.

Для создания приложений для офиса, необходимо знать программы пакета Office. Во-первых, знание функций, – какие доступны для разработчика в различных компонентах пакета Office. Во-вторых, знакомство со встроенными возможностями приложений пакета Office сэкономит время и силы.

Объектно-ориентированное программирование и VBA

Объектно-ориентированное программирование и VBA

В результате своей эволюции Visual Basic превратился в (почти) объектно-ориентированный язык программирования. Хотя освоение приемов работы с объектами и представляет некоторую трудность в начале знакомства с VBA, ожидаемая отдача того стоит. Тонкости программирования объектов будут рассмотрены в главе 12, но уже здесь имеет смысл получить хотя бы поверхностное представление о предмете.

Похожие главы из других книг:

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА JAVA 7. КЛАССЫ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА JAVA 7. КЛАССЫ Базовым элементом объектно-ориентированного программирования в языке Java является класс. В этой главе Вы научитесь создавать и расширять свои собственные классы, работать с экземплярами этих классов. Напомним,

Объектно-ориентированное моделирование

Объектно-ориентированное моделирование 3ds Max 2008 – объектно-ориентированная программа, то есть все, что создается в программе, является объектами. Геометрия, камеры и источники света на сцене – это объекты. Объектами также являются модификаторы, контроллеры, растровые

Объектно-ориентированное программирование и VBA

Объектно-ориентированное программирование и VBA В результате своей эволюции Visual Basic превратился в (почти) объектно-ориентированный язык программирования. Хотя освоение приемов работы с объектами и представляет некоторую трудность в начале знакомства с VBA, ожидаемая

Глава 12. Объектно-ориентированное программирование.

Глава 12. Объектно-ориентированное программирование. В этой главе .

Понимание свойств, методов и событий — главных компонентов VBA-объектов

Работа с объектными моделями

Использование форм как объектов

Выяснение и установка свойств объектов

Глава 6 Наследование и объектно-ориентированное проектирование

Глава 6 Наследование и объектно-ориентированное проектирование Объектно-ориентированное программирование (ООП) существует почти 20 лет, поэтому, вероятно, вы имеете некоторое представление о наследовании, производных классах и виртуальных функциях. Даже если вы

4.5. Unix и объектно-ориентированные языки

4.5. Unix и объектно-ориентированные языки С середины 80-х годов прошлого века большинство новых конструкций языков обладают собственной поддержкой объектно-ориентированного программирования (Object-Oriented Programming — OO). Напомним, что в объектно-ориентированном программировании

1.1. Введение в объектно-ориентированное программирование

1.1. Введение в объектно-ориентированное программирование Прежде чем начать разговор о самом языке Ruby, неплохо было бы потолковать об объектно-ориентированном программировании вообще. Поэтому сейчас мы вкратце рассмотрим общие идеи, лишь слегка касаясь

Объектно-ориентированное программирование

Объектно-ориентированное программирование Абстракция, наследование, полиморфизм, инкапсуляцияГоворя об ООП (объектно-ориентированном программировании), нельзя обойти стороной эти четыре базовых понятия. Поэтому ниже будет приведено их краткое описание.Абстракция –

2.4. Объектно-ориентированный подход

2.4. Объектно-ориентированный подход Вспомним спецификацию нашего массива в предыдущем разделе. Мы говорили о том, что некоторым пользователям может понадобиться упорядоченный массив, в то время как большинство, скорее всего, удовлетворится и неупорядоченным. Если

Процедурно-ориентированное программирование

Процедурно-ориентированное программирование В части II были представлены базовые компоненты языка С++: встроенные типы данных (int и double), типы классов (string и vector) и операции, которые можно совершать над данными. В части III мы увидим, как из этих компонентов строятся

17.1.1. Объектно-ориентированное проектирование

17.1.1. Объектно-ориентированное проектирование Из чего складывается объектно-ориентированное проектирование четырех рассмотренных выше видов запросов? Как решаются проблемы их внутреннего представления?С помощью наследования можно определить взаимосвязи между

Объектно-ориентированное моделирование

Объектно-ориентированное моделирование Общепринятой философией в большинстве современных графических систем при создании чертежей на компьютере является использование наипростейших геометрических примитивов: точек, отрезков и дуг. С помощью различных комбинаций

Читать еще:  Основы программирования с чего начать

Объектно-ориентированное программирование

Объектно-ориентированное программирование Питон — объектно-ориентированный язык со множественным наследованием. Можно сказать, что Питон поддерживает классическую ОО-модель с некоторыми особенностями. Классы в Python могут иметь статические переменные, разделяемые

Объектно-ориентированное конструирование ПО

Объектно-ориентированное конструирование ПО У нас уже накоплено достаточно оснований, чтобы попытаться определить ОО-конструирование ПО. Это будет лишь первый набросок, более конкретное определение последует в следующей лекции.ОО-конструирование ПО (определение 1)

Конструирование объектно-ориентированного ПО

Конструирование объектно-ориентированного ПО Мы уже давали определение конструирования ОО-ПО: будучи весьма общим, оно представляет метод следующим образом: «основывать архитектуру всякой программной системы на модулях, полученных из типов объектов, с которыми

Объектно ориентированное программирование в vba

1.1 Основные понятия объектно – ориентированного программирования

В основе объектно-ориентированного программирования управляемого событиями лежат понятия класс, инкапсуляция, объект, наследование, полиморфизм, событие и сообщение [].В качестве объектов могут рассматриваться конкретные предметы, а также абстрактные или реальные сущности. Например, объектами могут быть покупатель, фирма, производящая товары, банк, заказ на поставку и др.В частном случае, в VBA объектом являются элементы пользовательского интерфейса, которые создаются на Форме пользователя (UserForm) или на рабочем листе, а также рабочая книга и ее элементы.Объект является комбинацией состояния и поведения. Состояние описывается переменными экземпляра, а его возможное поведение характеризуется присущими ему методами.Каждый объект является представителем некоторого класса однотипных объектов, т.е. объект является экземпляром класса. Класс определяет общие для всех его объектов методы и свойства. Методы — это программные процедуры, реализующие некоторый алгоритм, который определяет взаимодействие объектов класса с внешней средой. Свойства представляют собой характеристики (атрибуты), присущие объектам (например, размер шрифта, название и др.). Инкапсуляция — это скрытие информации. При объектно-ориентированном программировании возможен доступ к объекту только через его методы и свойства. Внутренняя структура объекта скрыта от пользователя, т.е. объекты — это самостоятельные сущности, отделенные от внешнего мира. Инкапсуляция позволяет изменять реализацию объектов любого класса без опасений, что это вызовет нежелательные побочные эффекты в программной системе. Это мощное средство обеспечивает многократное использование одного и того же программного кода, позволяя собирать программу из готовых модулей, как здание из отдельных кирпичиков, но различной архитектуры и функционального назначения.Наследование — это возможность выделить свойства, методы и события одного объекта и приписать их другому объекту, иногда с их модификацией. С точки зрения программиста, новый класс должен содержать только коды и данные для новых или изменяющихся методов. Полиморфизм — это способность объектов выбирать операцию на основе данных, принимаемых в сообщении. Каждый объект может реагировать по-своему на одно и тоже сообщение. Например, команда Print будет по-разному воспринята черно-белым или цветным принтером.В заключение следует сказать, что ООП это новая технология программирования, позволившая перейти к индустриальным методам разработки программного обеспечения.

1.2 Общие сведения о VBA

Существует целый ряд систем программирования, позволяющих в той или иной степени реализовать концепцию объектно – ориентированного подхода при разработке программных средств. Наиболее полные возможности имеют такие системы, как Си ++, Java, Visual Basic. В отличие от Visual Basic, VBA не является языком объектно–ориентированного программирования (ООП) в строгом смысле этого слова., тем не менее, в нем очень широко используется элементы объектно – ориентированного программирования и связанные с ним понятия. VBA положен в основу системы программирования Visual Basic. Корпорация Microsoft использует возможности VBA при разработке приложений Windows, осуществляя параллельное с разработкой тестирование приложений с помощью макроязыка.Система программирования Visual Basic for Application (Visual Basic для приложений — VBA) занимает важное место в стратегии программных продуктов фирмы Microsoft. Другим подмножеством VBA является язык описания сценариев VBScript. Его основным назначением является создание интерактивных Web –страниц.Таким образом, изучив программирование в среде VBA, вы без больших усилий можете освоить программирование на Visual Basic или VBScript.Так что же такое VBA?Visual Basic for Application — это подмножество Visual Basic (VB), которое включает почти все его средства создания приложений, структуры данных и управляющие структуры, возможность создания пользовательских типов данных. VBA, как и VB, является языком визуального и событийно управляемого программирования — в нем есть возможность создания форм со стандартным набором элементов управления и написания процедур, обрабатывающих события, которые возникают при тех или иных действиях системы и конечного пользователя. Кроме того, он позволяет применять элементы ActiveX. В общем, это полноценный язык программирования, хотя и не обладающий всеми возможностями последних версий Visual Basic. С другой стороны, VBA позволяет работать с огромным набором объектов — по существу, в нем определены все объекты приложений MS Office. Отметим одну, может быть главную, особенность программирования на VBA. Программист, создавая проект на каком-либо языке программирования, работает в соответствующей среде, где язык — главное средство, а создание кода — главная цель действия программиста. А при работе на VBA целью является создание документа в широком смысле (документа Word, рабочей книги Excel, презентации и т. д.). Проект на VBA-результат побочной деятельности по созданию документа. Более того, проект на VBA, независимо от какого-либо документа, создать нельзя, даже если никакие свойства этого документа не используются.Приступая к очередному сеансу работы, программист открывает одно из приложений MS Office, и в этот момент в языке VBA автоматически становится доступным объект Application, определяющий это приложение, а также все встроенные в него объекты. Можно определить и создать, объект Application для любого приложения MS Office, получив тем самым доступ ко всем его объектам.Итак, VBA отличается от Visual Basic и прочих языков программирования тем, что он предоставляет возможность непосредственной работы с объектами MS Office. Это позволяет эффективно использовать его для автоматизации деятельности, связанной с обработкой различных типов документов. Обычные средства VBA, унаследованные от Visual Basic, — важная, но не определяющая часть языка.VBA позволяет существенно расширить вычислительные возможности Excel. С помощью VBA можно легко и быстро создавать различные приложения, даже не являясь специалистом в области программирования. VBA имеет графическую инструментальную среду, позволяющую создавать экранные формы и управляющие элементы. С его помощью можно создавать свои собственные функции для Excel, вызываемые мастером функций, разрабатывать макросы, создавать собственные меню и многое другое. VBA придает документам элегантность и позволяет с легкостью решать многие задачи, о возможности выполнения которых средствами Excel можно только мечтать. Как и Visual Basic, VBA реализует концепцию визуального программирования, управляемого событиями.

1.3 Объекты, методы, свойства, события

Объектам VBA присуща функциональность — они действуют определенным образом и могут откликаться на определенные ситуации. При этом если свойства объекта определяют его внешний вид и состояние, методы объекта определяют те задачи, которые может выполнить данный объект. Методы, по сути дела, представляют собой сегмент программного кода внедренный в объект. Существует определенный формат программного кода, задающего установку свойства и использование метода:

Объект. Свойство = ЗначениеСвойства

Объект. Метод [Параметр1 […]]

Здесь объект — имя настраиваемого объекта; Свойство — это характеристика, которую нужно изменить; Метод — это команда, которая используется для изменения объекта; Значение — это новая установка свойства; Параметр — это аргумент, используемый методом. Следующий пример показывает, как можно изменить текст в строке заголовка окна приложения посредством установки нового значения свойству Caption объекта Application:Application.Caption = “Пример установки свойства”Как и свойства, различные типы объектов могут иметь различные методы. Следующий пример показывает использование метода CountA (подсчет количества не пустых строк) объекта Application для определения номера последней не пустой строки активного рабочего листа:

НомерСтроки= Application.CountA(ActiveSheet.Columns(1))

Объекты могут реагировать на события — действия пользователя или другие внешние действия, например, щелчок по кнопке, изменение текста, нажатие клавиши и др. Событие представляет собой действие, распознаваемое объектом, для которого можно запрограммировать отклик. Иногда свойства и методы объекта оказываются связанными в том смысле, что выполнение некоторого метода приводит к изменению свойств объекта. В свою очередь, изменение некоторых свойств может вызвать наступление событий. Программа может обрабатывать два основных типа событий: инициируемые пользователем и генерируемые системой. События, инициируемые пользователем, возникают в результате его действий: нажатие клавиши, щелчки кнопками мыши. Но есть события, являющиеся следствием действий пользователя. Таким образом, любое из действий пользователя может вызвать целый набор событий, и порядок их вызова может быть важным. Основными действиями пользователя, генерирующими вызов событий в программе, являются следующие:· запуск программы;· нажатие клавиши;· щелчок кнопкой мыши;· перемещение мыши;· выход из программы.Суть программирования на VBA заключается в двух понятиях: событие и отклик на него. Если пользователь производит какое-то воздействие на систему, допустим, щелкает на кнопке, тогда в качестве отклика выполняется код созданной пользователем процедуры. Этот специальный вид процедур, генерирующих отклик на события, называется процедурами обработки событий. Если такой отклик не создан (не написана соответствующая процедура), то система никак не будет реагировать на это событие. Таким образом, задачей пользователя является разработка программного кода процедур для обработки различных событий, которые являются важными с точки зрения функционирования программы.

Вопросы для самоконтроля

1. Назовите и проясните основные понятия объектно-ориентированного программирования.

Читать еще:  Программа для программирования игр на русском

2. В чем заключается преимущество технологии ООП?

3. Что такое программирование, управляемое событиями? В чем его особенности?

4. Каково назначение VBA?

5. Что такое событие?

6. Что такое метод объекта?

7. Какие конструкции применяются для установки свойств объектов и доступа к их методам?

Начинаем программировать

2.3. Объектно-ориентированное программирование

В последние годы огромную популярность приобрело так называемое объектно-ориентированное программирование ( ООП ). Для того, чтобы эффективно работать в VBA , нужно понимать основные положения ООП . В частности, вам нужно разобраться, что такое классы , объекты , что такое методы , свойства и события объектов .

Класс — это шаблон для создания объектов . Например, пусть у нас есть класс «автомобиль». Он создан по общему чертежу, по единой проектной документации. Но каждый отдельный объект — конкретный экземпляр автомобиля -индивидуален. Например, они различаются цветом, особенностями отделки салона и так далее. Точно также происходит и при работе с программными классами и объектами . Один класс может породить множество различных объектов .

Объект — это нечто целостное, неделимое, содержащее в себе данные и код. В объекте может храниться информация и программные инструкции для обработки этой информации.

У объектов есть свойства и методы . Объекты могут откликаться на события . Чтобы объяснить эти важнейшие понятия, разовьем уже использованный пример.

Напомним: наш объект — это автомобиль. Какие свойства есть у автомобиля? Цвет, тип двигателя, скорость движения и так далее. А какие методы ? Что наш автомобиль умеет делать? Например, передвигаться, ехать. Получается, что у автомобиля есть как минимум два метода : «начать движение» и «остановиться». Точно так же, свойства и методы есть и у объектов , которыми мы будем пользоваться в VBA . А как насчет событий ? Например, событием по отношению к автомобилю может быть нажатие педали газа, которое приводит к увеличению скорости.

Детали работы объекта скрыты от пользователя. Обычно пользователю доступны лишь те свойства и методы , которые специально для этого предназначены. Пользователь не может повлиять на внутренние механизмы объекта , работая лишь со специально выделенными для взаимодействия с внешним миром методами и свойствами .

Обращение к методам объектов в VBA ведется таким образом:

Возможны и другие варианты использования методов . Например, если в метод нужно передать какой-то параметр , его вызов будет выглядеть так:

Обратите внимание на то, что объект и метод отделены точкой. Если вы вводите в редакторе VBA имя объекта и ставите после него точку — редактор подскажет вам, какие методы и свойства есть у этого объекта .

С помощью методов объекта мы даем объекту команды. Например, такая команда : Application.Quit , приводит к закрытию приложения. Очевидно, что Application — это объект » Приложение «, а Quit — это метод «Выйти».

Со свойствами обычно работают так:

Такой командой мы присваиваем некое значение свойству объекта .

А так: Переменная=Объект.Свойство можно присвоить некой переменной свойство объекта . Подробнее с переменными мы познакомимся ниже. Пока можете считать переменные специальными «ящиками» в памяти компьютера, в которых можно хранить различные данные.

Свойства — это, как мы уже говорили, признаки объектов . Например, такая команда , txt_User_Name.Text=»Александр» , выведет в текстовом поле ( объект txt_User_Name ) слово «Александр» . Очевидно, что эта команда модифицирует свойство объекта Text , которое отвечает за выводимый на объекте текст.

Событие — это действие, которое объект распознает и на которое реагирует. Например, событием может быть щелчок мышью по кнопке, открытие нового документа и т.д.

Объекты могут объединяться в коллекции объектов . Фактически, коллекции — это объекты , которые содержат в себе другие объекты . Обычно в коллекцию входят объекты , имеющие один и тот же тип — то есть — одинаковые объекты .

В следующей главе мы вплотную займемся работой с объектами , а пока обсудим очень важную тему — объектные модели приложений Office.

2.4. Введение в объектные модели приложений Office

Объекты приложений Office объединены в иерархическую структуру, которую называют объектной моделью. У каждого приложения своя объектная модель , то есть свой набор объектов . Например, в Microsoft Word на верхнем уровне иерархии стоит библиотека классов Word . Она включает в себя множество классов , например — Application , который символизирует приложение Microsoft Word . Application , в свою очередь , включает в себя другие объекты , методы , свойства . Например, такая команда приводит к закрытию Microsoft Word :

Обычно при работе в MS Word опускают вызов объекта Word , то есть вышеприведенную команду вполне может заменить такая:

Вызов объекта Application тоже можно опускать, но делать это допустимо не всегда. Например, команду Application.Quit сократить уже не получится

Как мы уже говорили, в редакторе VBA есть средство для просмотра информации об объектах — Object Browser. Для его вызова служит одноименная кнопка на панели инструментов, или клавиша F2 (рис. 2.3.).

В левой части окна (она называется Classes ) находится список классов и перечислений, входящих в библиотеку Word (или в ту библиотеку, которая выбрана в поле Object Browser ), в окне Members of можно просмотреть методы , свойства и события выбранного в предыдущем окне класса .

Значок с изображением руки в этом окне означает свойство , значок молнии — событие , значок с изображением маленького предмета с черточками — метод .

Здесь нет информации о том, что делает тот или иной метод , что означает то или иное свойство и т.д. Как же узнать подробности? Для начала — задуматься над именами классов , объектов , свойств, методов , событий . Правда, для их понимания нужно знать значения английских слов, которые использованы для их именования.

Далее, можно поискать информацию по интересующим вас объектам в справочной системе VBA , а так же — в базах данных Microsoft (www.microsoft.com).

Если вы не знаете, какой именно объект нужен для выполнения того или иного действия, но знаете как выполнить это действие с помощью визуальных средств приложения (например — с помощью кнопок на вкладках), вы можете исследовать объектные модели с помощью макрорекордера.

Объектные модели приложений огромны. С одной стороны, для эффективного использования всех объектов , нужно хорошо в них разбираться, с другой же — запомнить все это многообразие очень сложно. К счастью, для повседневной работы вам достаточно знать лишь основные классы и объекты объектных моделей, а если вам понадобится что-нибудь особенное — всегда можно воспользоваться справкой или использовать макрорекордер .

Помимо обычных объектных моделей приложений Office, вы можете использовать в своих программах другие объектные модели. Например, программируя для Word , можете воспользоваться объектной моделью Excel а так же — любыми другими моделями, установленными в системе. Для этого нужно подключить нужные модели из редактора VBA с помощью команды меню Tools -> References (Инструменты o Ссылки) (рис. 2.4.).

В данном случае мы подключаем библиотеку Microsoft Excel (она ценна встроенными функциями) к Microsoft Word , то есть сможем пользоваться некоторыми функциями Excel в Word . Подключенные модели можно просматривать в окне Project Explorer.

Подключив объектную модель Microsoft Excel в Microsoft Word , вы сможете программно работать с документами MS Excel из программ, написанных в MS Word (и наоборот). Если вы собираетесь работать с базами данных — вам понадобится особая объектная модель ADO и т.д.

2.5. Старые и новые версии Office: совместная работа

Сегодня нередко встречается ситуация, когда пользователям приходится одновременно работать со старыми версиями MS Office (например, Office XP, 2003) и новыми (Office 2007). Как вы знаете, эти версии имеют различные форматы файлов. Например, в предыдущих версиях MS Word используется универсальный формат .doc для хранения файлов документов, .dot — для шаблонов, а в новой — .docx и .docm для документов (второй формат поддерживает макросы, а первый — нет), и . dotm — для шаблонов.

Новый Office нормально работает со старыми версиями файлов, в том числе и с файлами, содержащими макросы. Однако, если вы хотите, чтобы, скажем, ваши *.doc — файлы, содержащие макросы, гарантированно работали в Office 2007 — обязательно тестируйте их в среде Office 2007.

Старые версии в исходном виде не умеют работать с новыми файлами. Чтобы они смогли читать новые файлы, нужно установить специальный конвертер, который можно скачать с сайта Microsoft , однако это не гарантирует полную совместимость программного кода. Так, объектные модели приложений Office 2007 дополнены новыми объектами (например, OMath для работы с формулами в MS Word ).

Если вам приходится работать в среде, которая предусматривает параллельное использование двух разных версий Office, лучше всего создавать и отлаживать программы именно в той версии, в которой вы планируете их использовать.

Большая часть материала данной книги справедлива для всех современных версий Office, однако, как уже было сказано, объектные модели приложений различаются, поэтому, используя тот или иной объект в устаревших версиях — обязательно сверяйтесь со справочной системой или исследуйте операции с помощью макрорекордера.

2.6. Выводы

В этой лекции вы узнали самое главное о программировании на VBA . Теперь вы знаете, как найти редактор Visual Basic и где хранится код макроса. Теперь вам нужно научиться пользоваться редактором, ориентироваться в его инструментах. Всему этому посвящена следующая лекция.

Ссылка на основную публикацию
Adblock
detector