
- •Федеральное агентство по образованию
- •Введение в vba
- •Объектно-ориентированное программирование
- •Основные понятия
- •Алфавит и словарь языка
- •Переменные
- •Константы
- •Строковые переменные
- •Массивы
- •Пользовательские типы данных
- •Операции vba
- •Объектная модель Excel
- •Свойства и методы объектов
- •Отображение объектной модели Excel
- •Иерархия объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов объекта
- •Переменные-объекты
- •Коллекции
- •Метод Add
- •Свойство Count
- •Свойства и методы основных объектов Excel
- •Объект Application
- •Объект Worksheet
- •Объект Range
- •Просмотр объектов
- •Использование справочной системы
- •Использование функциональной клавиши f1
- •Использование помощника
- •Вывод сообщений и ввод и данных
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Объединение текстовых строк
- •Концепция событий Excel
- •Типы событий Excel
- •События объекта Workbook
- •События объекта Worksheet
- •События объекта Application
- •События объекта UserForm
- •События, не связанные с конкретными объектами
- •Метод OnKey
- •Событие OnTime
- •Формы пользователя
- •Свойства, методы и события экранных форм
- •Некоторые свойства форм
- •Некоторые методы форм
- •Некоторые события форм
- •Элементы управления
- •Элемент управления Label (Надпись)
- •Окно свойств формы
- •Элемент управления CommandButton (Кнопка)
- •Элемент управления TextBox (Текстовое поле)
- •Элемент управления ComboBox
- •Элемент управления ListBox (список)
- •Элемент управления CheckBox (Флажок)
- •Элемент управления ToggleButton (Выключатель)
- •Элемент управления OptionButton (Переключатель)
- •Элемент управления Image (Рисунок)
- •Элемент управления ScrollBar (полоса прокрутки)
- •Элемент управления SpinButton (Счётчик)
- •Элемент управления RefEdit (Поле со свёртыванием)
- •Элементы управления на рабочем листе
- •Инструкции vba
- •Оператор присваивания
- •Инструкция Set
- •Инструкция For… Next
- •Инструкция While…Wend
- •Инструкция Do... Loop
- •Инструкция For Each…Next
- •Инструкции перехода
- •Инструкция условного перехода If…Then…Else
- •Инструкция Select…Case
- •Инструкция безусловного перехода GoTo
- •Инструкции перехода к обработчику ошибок On Error
- •Инструкции прерывания выполнения блока Exit
- •Инструкция передачи управления выполнением процедуры подпрограмме внутри процедуры GoSub… Return
- •Инструкция передачи управления выполнением процедуры на одну из нескольких строк кода On…GoSub и On…GoTo
- •Функции vba
- •Встроенные функции
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Примеры использования функций vba
- •Удаление ненужных символов
- •Определение длины строки
- •Сравнение и поиск строк
- •Функция StrComp
- •Функция InStr
- •Выделение части строки
- •Функция Left
- •Функция Right
- •Функция Mid
- •Форматирование значений данных
- •Функции, определённые пользователем
- •Пример функции
- •Файлы vba
- •Типы файлов в vba
- •Открытие и закрытие файла
- •Ввод данных в файл последовательного доступа
- •Вывод данных из файла последовательного доступа
- •Работа с файлом произвольного доступа
- •Создание процедуры
- •Выполнение процедуры
- •Сохранение процедуры
- •Запись последовательности действий пользователя
- •Просмотр кода макроса
- •Отладка программ
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Исправление ошибок
- •Библиографический список
- •Оглавление
Федеральное агентство по образованию
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И ФИНАНСОВ»
КАФЕДРА ИНФОРМАТИКИ
А.М. ВЛАСОВЕЦ
Введение в vba
Учебное пособие
ИЗДАТЕЛЬСТВО
САНКТ-ПЕТЕРБУРГСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
ЭКОНОМИКИ И ФИНАНСОВ
2010
А.М. Власовец
Введение в VBA. Учебное пособие. – СПб.: Изд-во СПбГУЭФ, 2010.–134с.
Рецензенты: – д-р экон.наук, проф. А.В. Завгородняя
д-р техн.наук, проф.Е.П. Истомин
©Издательство СПбГУЭФ, 2010
Объектно-ориентированное программирование
VBA – это языковый процессор интерпретирующего типа, который построчно анализирует исходную программу и одновременно выполняет предписанные действия.
“Язык программирования – формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя. Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.” [Материал из Википедии – свободной энциклопедии]
Язык программирования VBA (Visual Basic for Application) пакета Microsoft Office предназначен для автоматизации разработки документов при решении задач, использующих приложения этого пакета: Excel, Word, Access, PowerPoint, Outlook, – начиная с проектирования простых документов и кончая автоматизацией документооборота. VBA разработан на основе языка Visual Basic, является языком программирования высокого уровня, и в нем широко используются элементы объектно-ориентированного и событийно-управляемого программирования. VBA предоставляет пользователю возможность создания экранных форм со стандартным набором элементов управления и написания процедур, обрабатывающих события, которые возникают при тех или иных действиях системы и конечного пользователя.
При разработке приложений в VBA можно использовать средства процедурного программирования и объектно-ориентированного программирования.
Процедурное программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования значений исходных данных в результаты. Примерами процедурных языков программирования являются Assembler, Pascal, C, PL/1, FORTRAN.
Объектно-ориентированное программирование (ООП) – это совокупность подходов, методов, стратегий, идей и понятий, определяющая стиль написания программ, в которой основными концепциями являются понятия объектов и классов.
Объект – это некоторая сущность, обладающая определённым состоянием и поведением, имеет заданные значения атрибутов и операций. Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение объекта.
Класс — это тип, описывающий устройство объектов. Понятие “класс” подразумевает некоторое поведение и способ представления. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам конкретной предметной области.
Класс является обобщением понятия типа данных и задает свойства и поведение объектов класса - экземпляров класса. Каждый объект принадлежит некоторому классу. Отношение между объектом и его классом такое же, как между переменной и ее типом. Класс - это объединение данных и обрабатывающих их процедур и функций. Данные называются также переменными класса, а процедуры и функции - методами класса. Переменные определяют свойства объекта, а совокупность их значений - состояние объекта.
Наряду со свойствами и методами с классом связывается еще одно понятие - событие. Каждый класс имеет определенный набор событий, которые могут возникать при работе с объектами класса, чаще всего при определенных действиях пользователя, иногда как результат действия системы. При возникновении события, связанного с тем или иным объектом, система посылает сообщение объекту, которое может быть обработано методом – обработчиком события, специально созданным при конструировании объекта. События обеспечивают большую гибкость при работе с объектами. Методы класса выполняются одинаково для всех объектов класса, а на события каждый объект реагирует индивидуально, поскольку имеет собственный обработчик события.
Любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта правила, с помощью которых с объектом могут работать другие объекты, что обычно делается с помощью определения методов класса. Кроме того, классы могут находиться друг с другом в различных отношениях, таких как наследование.
Наследование – один из четырёх важнейших механизмов объектно-ориентированного программирования наряду с инкапсуляцией, полиморфизмом и абстракцией, позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Другими словами, класс-наследник реализует спецификацию уже существующего класса, добавляя при необходимости новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.
Инкапсуляция – свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только интерфейс объекта, т.е. способ взаимодействия с объектом. Пользователь может взаимодействовать с объектом только через этот интерфейс.
Полиморфизм – это явление, при котором один и тот же программный код выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода1. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами – из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием, в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
Абстракция да́нных – подход к обработке данных по принципу чёрного ящика. Чёрный ящик – термин, используемый в точных науках для обозначения системы, механизм работы которой очень сложен, неизвестен или неважен в рамках данной задачи. Такие системы обычно имеют некий “вход” для ввода информации и “выход” для отображения результатов работы. Состояние выходов обычно функционально зависит от состояния входов. Данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Обычно такой подход используется в объектно-ориентированном программировании, что позволяет работать с объектами, не вдаваясь в особенности их реализации.
При разработке программ на VBA можно использовать методы и средства как процедурного программирования, так и объектно-ориентированного программирования. Практически все инструкции, включая работу с файлами на внешних носителях информации, и большинство функций языка VBA имеют аналоги в языках процедурного программирования таких, например, как Algol, Fortran, Pascal. Поэтому любую программу, написанную на этих языках, можно написать на VBA. Но поскольку VBA предназначен для программирования в среде MS Office, то доступ программам на этом языке может быть осуществлён только через приложения MS Office Excel, Word, Access и других приложений MS Office.
Объектно-ориентированное программирование предоставляет возможность применять при разработке приложений средства для использования в программе такие объекты как, например, рабочий лист, диапазон ячеек, пользовательская форма, таблица, диаграмма – в Excel; документ, шрифт, область в документе, стиль в документе, таблица – в Word.
Упорядоченный набор однотипных объектов – экземпляров одного класса называется семейством. Семейство тоже является объектом. Одним из методов этого объекта является процедура, возвращающая ссылку на конкретный объект в семействе, а одним из свойств семейства – число объектов, хранящихся в нем. Например, совокупность листов в приложении Excel образует семейство Worksheets.
Объекты и семейства сгруппированы в виде иерархических структур, которые называются объектными моделями. В VBA определены специальные объектные модели для каждого приложения семейства Microsoft Office и объектные модели, общие для всех приложений Microsoft Office. Объектные модели VBA можно изучать, используя справочную систему и окно просмотра объектов. Окно просмотра объектов представляет собой специальное средство редактора Visual Basic, позволяющее просматривать содержимое библиотек объектов и производить поиск справочной информации. Каждое из приложений Microsoft Office предоставляет свои объектные модели в виде одноименной библиотеки объектов.
Принцип разработки документов с использованием VBA одинаков для всех приложений Microsoft Office. Наиболее развитой и чаще всего используемой является объектная модель Excel. Поэтому в дальнейшем методика разработки приложений в VBA будет производиться на примере Excel. Освоив применение VBA для Excel, не трудно сделать это и для других приложений Microsoft Office. Для этого необходимо изучить объектную модель соответствующего приложения.
С помощью VBA в Excel можно выполнять такие действия как, например:
автоматизировать решение повторяющихся задач;
настроить интерфейс Excel с помощью изменения существующих или создания новых панелей инструментов, меню и пользовательских форм;
добавить новые функции в Excel;
создавать сложные отчеты;
манипулировать данными и осуществлять анализ данных.
При применении процедурных языков программирования большая часть средств разработки приложений реализуется средствами работы с файлами: поиск, открытие, сохранение, печать и т.п., – а также возможностями работы с фрагментами файлов: вырезание, вставка, копирование. В Excel для создания кода программ все основные средства его разработки уже имеются в приложении: средства манипулирования файлами, редактирования данных и форматирования, и их можно использовать. VBA обеспечивает также доступ к библиотеке функций Excel, позволяет использовать такие средства, как Microsoft SQL Server, включая OLAP Services, или средства создания отчетов и форм Microsoft Access.