Институт управления, бизнеса и права
Опубликован: 25.03.2009 | Доступ: свободный | Студентов: 7323 / 1525 | Оценка: 4.41 / 4.15 | Длительность: 14:33:00
Лекция 2:

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

< Лекция 1 || Лекция 2: 12 || Лекция 3 >

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

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

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

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

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

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

Напомним: наш объект - это автомобиль. Какие свойства есть у автомобиля? Цвет, тип двигателя, скорость движения и так далее. А какие методы? Что наш автомобиль умеет делать? Например, передвигаться, ехать. Получается, что у автомобиля есть как минимум два метода: "начать движение" и "остановиться". Точно так же, свойства и методы есть и у объектов, которыми мы будем пользоваться в 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:

Word.Application.Quit

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

Application.Quit

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

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

Окно Object Browser

Рис. 2.3. Окно Object Browser

В левой части окна (она называется 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

Рис. 2.4. Подключение библиотеки объектов Microsoft Excel

Подключив объектную модель 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 и где хранится код макроса. Теперь вам нужно научиться пользоваться редактором, ориентироваться в его инструментах. Всему этому посвящена следующая лекция.

< Лекция 1 || Лекция 2: 12 || Лекция 3 >
Евгений Ушаков
Евгений Ушаков

Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно?

Александр Новиков
Александр Новиков

Добрый день! Очень нужен справочник по объектам VBA c описание их методов и свойств.

Кто-нибудь знает, где можно приобрести?

(Он конечно есть в VBA - Object browser, но не очень удобный)