Главная страница
Навигация по странице:

  • ЭКОНОМИКИ И ФИНАНСОВ» КАФЕДРА ИНФОРМАТИКИ А.М. ВЛАСОВЕЦ ВВЕДЕНИЕ В VBA УЧЕБНОЕ ПОСОБИЕ ИЗДАТЕЛЬСТВО

  • Рецензенты

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

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

  • 2. Основные понятия

  • 2.1. Алфавит и словарь языка

  • Программирование VBA. Федеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования


    Скачать 2.93 Mb.
    НазваниеФедеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования
    АнкорПрограммирование VBA.pdf
    Дата24.04.2017
    Размер2.93 Mb.
    Формат файлаpdf
    Имя файлаПрограммирование VBA.pdf
    ТипУчебное пособие
    #4339
    страница1 из 13
      1   2   3   4   5   6   7   8   9   ...   13

    ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
    ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
    ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
    «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
    ЭКОНОМИКИ И ФИНАНСОВ»
    КАФЕДРА ИНФОРМАТИКИ
    А.М. ВЛАСОВЕЦ
    ВВЕДЕНИЕ В VBA
    УЧЕБНОЕ ПОСОБИЕ
    ИЗДАТЕЛЬСТВО
    САНКТ-ПЕТЕРБУРГСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
    ЭКОНОМИКИ И ФИНАНСОВ
    2010

    2
    ББК 32.81
    В 58
    Власовец А.М.
    Введение в VBA: Учебное пособие. – СПб.: Изд-во СПбГУЭФ, 2010. –
    135 с.
    В учебном пособии изложены основные сведения об объектно-ориенти- рованном языке программирования, позволяющем автоматизировать решение задач в среде приложений в MS Office.
    Содержание учебного пособия соответствует программам учебных дисци- плин «Информатика и программирование» и «Информатика». Пособие предна- значено для студентов специальности «Прикладная информатика в экономике» и может быть использовано студентами других факультетов СПбГУЭФ.
    Рецензенты: д-р техн. наук, проф. Е.П. Истомин д-р экон. наук, проф. В.П. Чернов
    © Издательство СПбГУЭФ, 2010

    3
    1. Объектно-ориентированное программирование
    VBA – это языковый процессор интерпретирующего типа, который построчно анализирует исходную программу и одновременно выполняет предписанные действия.
    “Язык программирования – формальная знаковая система, предна- значенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя. Язык програм- мирования определяет набор лексических, синтаксических и семантиче- ских правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить, на какие события будет реаги- ровать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при раз- личных обстоятельствах” [Материал из Википедии – свободной энцикло- педии].
    Язык программирования VBA (Visual Basic for Application) пакета Mi- crosoft Office предназначен для автоматизации разработки документов при решении задач, использующих приложения этого пакета: Excel, Word, Ac- cess, PowerPoint, Outlook, – начиная с проектирования простых документов и кончая автоматизацией документооборота. VBA разработан на основе языка Visual Basic, является языком программирования высокого уровня, и в нем широко используются элементы объектно-ориентированного и собы- тийно-управляемого программирования. VBA предоставляет пользовате- лю возможность создания экранных форм со стандартным набором эле-
    ментов управления и написания процедур, обрабатывающих события, которые возникают при тех или иных действиях системы и конечного поль- зователя.
    При разработке приложений в VBA можно использовать средства
    процедурного программированияи объектно-ориентированного про- граммирования.
    Процедурное программирование является отражением архитекту- ры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
    Программа на процедурном языке программирования состоит из по- следовательности операторов (инструкций), задающих процедуру реше- ния задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Выполнение программы сво- дится к последовательному выполнению операторов с целью преобразо- вания значений исходных данных в результаты. Примерами процедурных языков программирования являются Assembler, Pascal, C, PL/1, FORTRAN.
    Объектно-ориентированное программирование (ООП) – это сово- купность подходов, методов, стратегий, идей и понятий, определяющая стиль написания программ, в которой основными концепциями являются понятия объектов и классов.

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

    состояние объекта.
    Наряду со свойствами и методами с классом связывается еще одно понятие – событие. Каждый класс имеет определенный набор событий, которые могут возникать при работе с объектами класса, чаще всего при определенных действиях пользователя, иногда как результат действия системы. При возникновении события, связанного с тем или иным объек- том, система посылает сообщение объекту, которое может быть обрабо- тано методом – обработчиком события, специально созданным при кон- струировании объекта. События обеспечивают большую гибкость при ра- боте с объектами. Методы класса выполняются одинаково для всех объек- тов класса, а на события каждый объект реагирует индивидуально, по- скольку имеет собственный обработчик события.
    Любой объект может принадлежать или не принадлежать опреде- ленному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта правила, с помощью которых с объектом могут работать другие объекты, что обычно делается с помощью определения методов класса. Кроме того, классы мо- гут находиться друг с другом в различных отношениях, таких как наследо-
    вание.
    Наследование – один из четырёх важнейших механизмов объектно-
    ориентированного программирования наряду с инкапсуляцией, полимор-
    физмом и абстракцией, позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Другими словами, класс-наследник реализует спецификацию уже существующего класса, добавляя при необходимости новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Это позволя- ет обращаться с объектами класса-наследника точно так же, как с объек- тами базового класса.

    5
    Инкапсуляция – свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от поль- зователя. При этом пользователю предоставляется только интерфейс объекта, т.е. способ взаимодействия с объектом. Пользователь может взаимодействовать с объектом только через этот интерфейс.
    Полиморфизм – это явление, при котором один и тот же программ- ный код выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода. Полиморфизм обеспечива- ется тем, что в классе-потомке изменяют реализацию метода класса- предка с обязательным сохранением сигнатуры метода
    1
    . Это обеспечи- вает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами – из объекта какого класса осуществляется вызов, из того класса и берётся ме- тод с данным именем. Такой механизм называется динамическим (или поздним) связыванием, в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
    Абстракция да́нных – подход к обработке данных по принципу чёр- ного ящика. Чёрный ящик – термин, используемый в точных науках для обозначения системы, механизм работы которой очень сложен, неизвес- тен или неважен в рамках данной задачи. Такие системы обычно имеют некий “вход” для ввода информации и “выход” для отображения результа- тов работы. Состояние выходов обычно функционально зависит от со- стояния входов. Данные обрабатываются функцией высокого уровня с по- мощью вызова функций низкого уровня. Обычно такой подход использует- ся в объектно-ориентированном программировании, что позволяет рабо- тать с объектами, не вдаваясь в особенности их реализации.
    При разработке программ на VBA можно использовать методы и средства как процедурного программирования, так и объектно- ориентированного программирования. Практически все инструкции, вклю- чая работу с файлами на внешних носителях информации, и большинство функций языка VBA имеют аналоги в языках процедурного программиро- вания таких, например, как Algol, Fortran, Pascal. Поэтому любую програм- му, написанную на этих языках, можно написать на VBA. Но поскольку VBA предназначен для программирования в среде MS Office, то доступ про- граммам на этом языке может быть осуществлён только через приложе-
    ния MS Office Excel, Word, Access и других приложенийMS Office.
    Объектно-ориентированное программирование предоставляет воз- можность применять при разработке приложений средства для использо- вания в программе такие объекты как, например, рабочий лист, диапазон ячеек, пользовательская форма, таблица, диаграмма – в Excel; документ, шрифт, область в документе, стиль в документе, таблица – в Word.
    1
    Сигнатура метода – это сокращенная форма записи параметров метода и типов возвращаемого значения.

    6
    Упорядоченный набор однотипных объектов – экземпляров одного класса называется семейством. Семейство тоже является объектом. Од- ним из методов этого объекта является процедура, возвращающая ссылку на конкретный объект в семействе, а одним из свойств семейства – число объектов, хранящихся в нем. Например, совокупность листов в приложе- нии 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.

    7
    2. Основные понятия
    Программный код в VBA состоит из инструкций. Инструкция или
    оператор (англ. statement – утверждение; сообщение) – наименьшая ав- тономная часть языка программирования; команда. Инструкции хранятся в
    процедурах, которые подразделяются на процедуры типа Sub и процеду- ры типа Function. Процедуру типа Sub в Excel называют также макросом.
    Процедура отличается от функции тем, что функция возвращает вызвав- шей ее программе единственное значение, которое там будет использова- но. Инструкции состоят из ключевых слов, констант и операторов.
    Процедуры хранятся в модулях, причём в одном модуле может хра- ниться одна или несколько процедур. Модуль можно определить как сово- купность объявлений переменных и процедур, хранящихся как единое це- лое. Совокупность модулей, предназначенных для решения одной задачи, образует проект. Различают два основных типа модулей: стандартные модули и модули классов.
    Стандартный модуль – это элемент проекта, который содержит про- граммный код, непосредственно используемый остальными элементами проекта (глобальные функции, переменные, константы и т. д.). В окне структуры проекта стандартные модули группируются в папку Modules.
    Обычно в стандартном модуле записываются программы, которые не при- вязаны к конкретным объектам, таким как рабочий лист и рабочая книга.
    Модуль класса – это модуль, в котором записывается программный код, реализующий работу созданных программистом классов. В окне структуры проекта такие модули группируются в папку Class Modules.
    В большинстве случаев используются стандартные модули, назы- ваемые обычно просто модулями.
    Формат процедуры имеет вид
    1
    :
    [Public] [Private] [Static] Sub|Function <ИмяПроцедуры> ([Параметры])
    [‘Комментарии]
    <Инструкции>
    End Sub|Function
    По умолчанию все процедуры VBA определяются как Public (откры- тые), т.е. их можно вызвать из любой части программы: из того же или другого модуля, из другого проекта. Объявить процедуру как Public можно так:
    Public Sub План() или Sub План () т.к. процедура определяется как Public по умолчанию.
    Если модуль объявлен как Private, например,
    Private Sub Доход ()
    1
    Элемент, заключённый в квадратные скобки, не обязателен, а угловые скобки озна- чают понятие.

    8 то переменные, объекты и определяемые пользователем типы, описанные на уровне модуля, доступны только внутри проекта, содержащего этот мо- дуль, но недоступны для других приложений или проектов. Процедура, объявленная как Private, позволяет ограничить взаимную видимость за- груженных нескольких проектов, т.е. взаимные ссылки между загруженны- ми проектами VBA запрещены.
    В процедуре, объявленной как Static, например,
    Private Static Sub Доход () все переменные в ней автоматически станут статическими и будут сохра- нять свои значения после завершения работы процедуры.
    Комментарий – любой текст, начинающийся с символа “одиночная кавычка ' ”
    . Его можно вводить в начале строки программного кода или за последним символом инструкции. Пустые комментарии, содержащие толь- ко символ “кавычка”, применяются для наглядного разделения процедуры на части.
    Ввод программного кода можно производить с клавиатуры или ис- пользовать функцию записи макросов. В последнем случае в каждом но- вом сеансе работы с Excel автоматически создаётся новый модуль, иден- тифицируемый очередным порядковым номером – Модуль1, Модуль2 и т.д., если программист не назначил для записи процедуры существующий модуль. Обычно в одном модуле записывают логически связанные между собой процедуры, хотя каждую процедуру можно хранить в отдельном модуле.
    2.1. Алфавит и словарь языка
    Программа на языке VBA формируется из предложений, состоящих из лексем и разделителей, которые формируются из конечного набора ли- тер, образующих алфавит языка VBA.
    Лексема – это единица текста программы, которую распознаёт ком- пилятор и которая не может быть разбита в дальнейшем. В Visual Basic различают шесть классов лексем: идентификаторы; ключевые (зарезер- вированные) слова; константы; строки; операции (знаки операций); разде- лители.
    В алфавит VBA входят:
     буквы латинского алфавита прописные: A, B, C, D, E, F, … X, Y , Z и строчные: a, b, c, d, e, … x, y, z;
     буквы кириллицы прописные: А, Б, В, Г, В, Е … Э, Ю, Я и строчные и строчные: а, б, в, г, д., е … э, ю, я;
     цифры от 0 до 9;
     символ подчеркивания “_”.
    Данные символы используются для построения идентификаторов: имен переменных, констант, процедур, функций, меток переходов и имен типов. Использование строчных букв эквивалентно построению соответ- ствующих конструкций из прописных букв и используются для стилистиче- ского оформления программы.

    9
    Кроме этих символов, в состав алфавита также входят:
     неизображаемые символы, используемые для отделения лексем друг от друга (пробел, табуляция, переход на новую строку). Лек- семы включают в себя зарезервированные слова, идентификато- ры (стандартные и пользовательские), специальные символы и метки;
     специальные символы, участвующие в построении конструкций языка (табл. 1).
    Специальные символы
    Таблица 1
    + плюс
    < меньше
    [ ] квадратные скобки
    – минус
    _ подчёркивание
    ( ) круглые скобки
    * звёздочка точка
    ^ тильда
    / дробная черта
    , запятая
    ‘ апостроф
    = равно
    : двоеточие
    $ знак доллара
    > больше
    ; точка с запятой
    <> Не равно
    <= меньше или равно >= больше или равно
    Из этих символов образуются слова языка VBA. Слова в программах отделяются друг от друга разделителями и специальными символами.
    Разделителями являются:
     пробел;
     символ продолжения строки ( _ );
     символ табуляции.
    Специальные символы: +, – ,* , / , ’, . , =, <, >, : - используются для обозначения операторов и других языковых конструкций. Все слова языка
    VBA можно разделить на четыре группы:
     имена (идентификаторы);
     ключевые (зарезервированные) слова;
     числа;
     строки.
    Имя (идентификатор) – произвольная последовательность букв ла- тинского и русского алфавита и цифр, не превышающая 255 символов, ко- торая обязательно должна начинаться с буквы на любом регистре букв
    (верхнем или нижнем). Идентификатор может включать также символы подчеркивания. В качестве идентификаторов нельзя использовать ключе- вые слова языка и имена стандартных объектов. Имя не может содержать точек, пробелов и следующих символов: %, .&,!, #, @, $. Рекомендуется идентификаторы, состоящие больше чем из одного слова, разделять сим- волом подчёркивания или писать слитно, начиная каждое слово с пропис- ной буквы, а остальную часть слова писать прописными. Имена должны быть уникальны внутри области, в которой они определены, и по возмож- ности обозначать смысл идентификатора. Идентификаторы используются для обозначения переменных программного кода VBA. Примеры иденти- фикаторов: Цена_товара, ЦенаТовара, Numero, Contador и т.д.

    10
    Идентификаторы применяются также для обозначения объектов, ме- тодов и свойств VBA, которые представляют собой однозначно опреде- лённые лексемы. Хотя VBA позволяет использовать эти лексемы в качест- ве идентификаторов переменных, тем не менее не рекомендуется это де- лать во избежание непредвиденных ошибок.
    Ключевое (зарезервированное) слово – это слово, которое представ- ляет целую языковую конструкцию или ее часть и может использоваться только в том виде, в каком оно указывается при описании синтаксиса язы- ка. Никакое другое слово в программе не должно совпадать с ключевым словом. Обычно первая буква ключевого слова – прописная, но можно вводить слово только строчными буквами. Если при вводе программного кода в слове нет ошибки, редактор исправит его так, как это принято в языке. В противном случае VBA выдаёт сообщения об ошибке компиля- ции, например, такие:
    Ключевые слова, используемые для построения инструкций, напри- мер, As, Dim, For,
    E R
    Integer и т.п.,
    ER
    VBA выделяет синим цветом и первую букву делает прописной.
    Текст программы на языке VBA состоит из последовательности предложений, каждое из которых представляет собой комбинацию ключе- вых слов и идентификаторов.
    Строка – произвольная последовательность символов алфавита, заключенная в двойные кавычки (“”). Если строка включает символ кавыч- ки, перед ним ставится еще один такой же символ, чтобы отличить его от символа конца строки, например “ОАО ““Океан””.
    Число используется для представления дробных и целых чисел. Це- лое число записывается в виде последовательности цифр. Для записи де- сятичных чисел в качестве разделителя десятичных знаков используется точка “.”. Для записи чисел можно использовать экспоненциальную форму.
    Строка – произвольная последовательность символов алфавита, заключенная в двойные кавычки (“”). Если строка включает символ кавыч- ки, перед ним ставится еще один такой же символ, чтобы отличить его от символа конца строки, например “ОАО ““Океан””.
      1   2   3   4   5   6   7   8   9   ...   13


    написать администратору сайта