Основы языка программирования VBA




Источник: https://www.lessons-tva.info/

 

Microsoft Office основан на принципах объектно-ориентированного программирования. Microsoft Office может быть представлен семейством классов и объектов. Необходимо отметить, что структуры объектных моделей приложений Microsoft Office отличаются друг от друга. Так объектная модель Access отличается от объектных моделей Word, Excel, PowerPoint. Иерархические структуры, сформированные из объектов и семейств, называются объектными моделями приложений.

 

Программирование VBA в Microsoft Access отличается от программирования в других приложениях Microsoft Office. Программирование VBA в СУБД Access используют в основном профессиональные программисты в процессе создания различных приложений для пользователей. Но в некоторых случаях пользователи баз данных Access самостоятельно применяют программирование VBA для автоматизации своей деятельности.

 

Для программирования в Office можно использовать COM-совместимые или.NET-совместимые языки программирования. COM (Component Object Model - объектная модель компонентов) — это стандарт от компании Microsoft. COM предназначен для создания программного обеспечения на основе взаимодействующих COM-компонентов. При этом каждый COM-компонент через COM-интерфейсы может использоваться во многих программах одновременно. Использование COM-компонентов обеспечивается Windows API (application programming interfaces - интерфейсом прикладного программирования). К COM-совместимым языкам программирования относятся: Delphi, C, C++, Java, JScript, Visual Basic, VBScript и т.д.

 

Языки программирования.NET (языки программирования платформы.NET компании Microsoft) — компьютерные языки программирования, которые используются для создания библиотек и программ, удовлетворяющих требованиям CLI (Common Language Infrastructure - общеязыковая инфраструктура). К NET-совместимым языкам программирования относятся: VB.NET, JScript.NET, Delphi Visual C++, Borland C++, C# (си-шарп) и т.д.

 

Но для программирования приложений в Microsoft Office целесообразно использовать Visual Basic for Applications, что позволяет создавать приложения на языке VBA непосредственно внутри документов Microsoft Office. В этом случае программный код на языке VBA хранится внутри документов Word, Excel, PowerPoint, Access и т.д.

 

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

 

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

 

В СУБД Access используется визуальная среда программирования, основанная на событиях объектов. Технология разработки программы на VBA состоит в выборе объектов из определенного класса, выборе свойств объектов, в задании событий и создании (написании программы или исполняемого кода) процедуры их обработки.

 

Все приложения MS Office имеют собственные объектные модели. В VBA определены объектные модели для каждого приложения Microsoft Office, объекты которых можно использовать в программах. Объектная модель Microsoft Access представляет собой набор объектов, организованных в библиотеку Access.

 

Главным в иерархии объектов Access является объект Application (приложение Access). Слева на рисунке 1 представлена объектная модель Access.Application. Объекты модели не раскрыты. Справа на этом же рисунке показан фрагмент объектной модели, в которой объект CodeData представлен в раскрытом виде (в объект CodeData входят коллекции). Информация заимствована из справки Microsoft Visual Basic приложения Access.

 


Рис. 1

 

Для просмотра объектов VBA в приложении Access можно использовать окно просмотра Object Browser. Это окно вызывается из редактора VBA, выполнив команду View/Object Browser. Объекты можно искать во всех доступных библиотеках (All Libraries). Скриншот окна диалога Object Browser представлен на рисунке 2.

 


Рис. 2

 

По умолчанию список библиотек (рис. 2) содержит библиотеку Access, DAO, VBA, библиотеку проекта - Деканат и др. Список доступных библиотек можно изменять в окне диалога References, которое открывается командой Tools/References.

 

Для поиска объекта Application в библиотеке Access выберем Access в открывающемся списке библиотек, а в списке поиск введем Application и щелкнем на кнопке Просмотр. Результаты поиска будут отображаться в окне Object Browser (рис. 3).

 


Рис. 3

 

В окне мы увидим, в какой библиотеке, в каком классе содержится объект Application, который мы искали. В списке Library (библиотека) отображаются объекты, в списке Class отображаются все имеющиеся модули и объекты класса. В списке Member отображаются компоненты (элементы объекта: свойства, методы, события) класса или проекта.

 

Если выбрать библиотеку Деканат, то окно диалога Object Browser будет иметь вид, представленный на рисунке 4.

 


Рис. 4

 

Если в списке Classes выделить объект Form_FormatP, то списке Members (компоненты) будет отображаться свойства и методы этого объекта.

 

Графические символы для описания объектов в окне диалога Object Browser: - событие; - методы; - свойства.

 

Если выбрать библиотеку VBA, то окно диалога Object Browser будет иметь вид, представленный на рис.5. В окне отображается библиотека классов, связанных с языком VBA.

 


Рис. 5

 

В нижней части инструмента Object Browser имеется еще одно полезное окно, которое предназначено для отображения сведений о выбранном элементе. На рисунке 5 в этом окне отображается выбранный класс <globals>. Рекомендую пользователям самостоятельно ознакомиться с этим окном.

 

Объекты VBA - это основные средства манипуляции данными в Microsoft Access. Итак, объект – это программный элемент, который отображается на экране, и который содержит необходимые переменные, определяющие его свойства, а также список методов для управления объектом. Знание структуры объектной модели Microsoft Access позволяет создавать качественные приложения.

Типы данных VBA

Источник: https://www.lessons-tva.info/

 

Язык программирования VBA служит для написания кода программы. VBA имеет свой алфавит и синтаксис. Программный код VBA состоит из группы инструкций, записанных с учетом определенного алфавита и синтаксических правил. В алфавит VBA входят: прописные и строчные буквы латинского алфавита, прописные и строчные буквы кириллицы, цифры 0 - 9, символы подчеркивания "_", специальные символы и составные символы.

 

В исходном тексте программы можно использовать комментарии. Комментарии - это запись в строке после апострофа или ключевого слова REM. Комментарии - это пояснения в исходном тексте программы.

 

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

 

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

 

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

 

Основными видами данных VBA являются константы и переменные. Переменные предоставляют в программе значения или объекты. Прежде чем использовать переменную ее необходимо объявить (декларировать) с помощью оператора DIM (формат: DIM ИмяПеременной AS ТипДанных).

 

Например, DIM MyType AS Integer. Для объявления какой-либо переменной необходимо ввести ключевое слово DIM. Это ключевое слово сообщает VBA, что объявляется переменная и резервируется область памяти для ее хранения. Далее вводим имя той переменной, которую надо объявить - MyType. Затем надо записать ключевое слово AS (как), которое сообщает, что определяется тип данных для переменной MyType. Далее объявим переменную MyType как целое число, и вводим тип данных Integer.

 

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

 

К основным типам данных VBA относятся: числовые, символьные (строки), логические, дата и объектные.

 

Числовой тип данных

В VBA используется шесть различных численных типов данных (самый обширный тип данных): Byte, Integer, Long, Single, Double, Currency.

Целые типы:

§ Byte - целые числа (интервалы: 0 - 255, резервируется байт - 1 байт);

§ Integer - целые числа (-32768 - 32767, 2 байта);

§ Long - длинные целые числа (-2.1E9 - 2.1E9, 4 байта).

Плавающие типы:

§ Single - вещественные числа одинарной точности с плавающей точкой (интервалы: -3,402823E38 - -1,401298E-45 и 1,401298E-45 - 3,402823E38? 4 байта);

§ Double - вещественные числа двойной точности с плавающей точкой (-1,79769313486232E308 - -4,94065645841247E-324 и 4,94065645841247E-324 - 1,79769313486232E308, 8 байт).

Типы с фиксированной точкой Currency - числа, имеющие до 15 цифр до десятичной точки и четыре цифры после нее (-922337203685477,5808 - 922337203685477,5807).

 

Строковый тип данных

Строковый тип:

§ string фиксированной длины - текстовая информация в интервале от 1 до 65400, резервируется память длиной в 1 строку;

§ string переменной длины - текстовая информация в интервале от 0 до 2 млрд. символов, резервируется память длиной 10 байт + длина строки.

Переменные VBA

Источник: https://www.lessons-tva.info/

 

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

 

Переменные VBA могут быть объявлены или заданы как явно, так и неявно. В программе можно задавать переменные неявно, для этого переменной присваивается какое-то значение, например Y=100. Оператор присваивания " = " сохраняет численное значение 100 в ячейке памяти, заданной именем переменной Y. Для данного примера тип данных не задан. Тип данных при неявном объявлении переменной можно задать при помощи суффиксов типов данных. Суффиксы типа данных записываются непосредственно за переменной.

 

Для явного объявления переменных используются следующие операторы: Dim, Static, Private, Public. Обычно переменные объявляются в области видимости (действия): отдельной процедуры (локальной области), отдельного модуля, всех модулей приложения (глобальной области). Объявлять переменную можно в любом месте программы, но только один раз. Переменная объявляется до первого ее упоминания в процедуре. Но наиболее целесообразно поместить все объявления в один блок в начале процедуры либо в разделе объявлений (разделе Declarations).

 

Прежде чем использовать переменную, ей необходимо присвоить уникальное имя (идентификатор) и, кроме того, ее необходимо объявить с помощью одного из операторов:

§ операторы DIM или Static используются для объявления переменной (локальной переменной) в области действия или области видимости отдельной процедуры. В этом случае к переменной можно обратиться только в пределах области действия (видимости) этой конкретной процедуры;

§ операторы DIM или Private применяются для объявления переменной доступной в области действия отдельного модуля. Оператор DIM или Private помещается в разделе Declarations;

§ оператор Public служит для объявления переменной доступной в области действия всех модулей приложения (проекта). Оператор Public помещается только в разделе Declarations, и, кроме того, оператор Public должен вводиться только в стандартный модуль VBA.

Рис. 1 а. Объявление локальной переменной Dim. Рис. 1 б. Объявление локальной переменной Static.

 

На рис. 1а дата в формате #1 января 1951# была переформатирована VBA в следующий формат: #2/1/1951# (ММ.ДД.ГГ). На рис. 1б дата, введенная в формате #1 /2/ 2011# (ММ.ДД.ГГ), означает 2 января 2011 года (02.01.2011).

 

Рис. 2 а. Объявление переменной Private в разделе Declarations. Рис. 2 б. Объявление переменной Dim в разделе Declarations.

 

На рис. 2 а и 2 б представлена переменная "y", которая объявляется как целое число - Integer. Операторы Private и DIM, которые применяются для объявления переменной "y" доступной в области действия отдельного модуля, помещены в разделе Declarations.

 

Рис. 3. Объявление глобальной переменной доступной в области действия всех модулей приложения.

 

Наиболее распространенным оператором объявления переменной является оператор DIM. Необходимо отметить, что одним оператором объявления переменной можно описать произвольное число переменных, например: Dim MyVar1 As String, MyVar2 As Date

 

Чтобы программа работала быстрее и занимала меньше места в оперативной памяти необходимо применять явное объявление переменной. Для явного объявления всех используемых переменных, необходимо включить строку (оператор) Option Explicit в раздел объявлений в верхней части окна редактора кода (Code) модуля VBA. На рисунке 4 представлен скриншот окна редактора кода, на котором видно строку Option Explicit помещенную в разделе Declarations.

 

Рис. 4.

 

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

 

Имя переменной должно удовлетворять ряду требований:

§ имя обязательно должно начинаться с буквы, а затем за буквой могут следовать цифры, буквы и символы подчеркивания;

§ имена не могут содержать символы: #, $, &, %, @,!;

§ имя не должно содержать знаков препинания (точек, запятых и т.д.) и пробелов;

§ имена не должны использовать зарезервированные ключевые слова, которые используются VBA;

§ имя не должно превышать 255 символов;

Необходимо отметить, что в именах VBA могут использоваться как строчные, так и прописные буквы, например MyVar. Кроме того, целесообразно назначать переменным осмысленные имена в соответствии с их функциональным назначением и префиксами различных типов данных и объектов.

 

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

 

Но для эффективного использования памяти ПК целесообразно объявлять переменные и правильно выбирать тип данных. При явном объявлении типа данных программа работает быстрее и занимает меньше места в оперативной памяти.

 

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

 

Рис. 5.

 

На рисунке 5 представлен скриншот окна редактора кода, в котором видна объявленная константа Const Pi As Double = 3.14. Где константа "ПИ" объявляется как вещественное число двойной точности с плавающей точкой - Double.

 

Для явного объявления переменных без ключевого слова As можно применять суффиксы типов данных. Например, DIM MyType% (объявляется тип переменной MyType как целое число). В этом случае ключевое слово As не используется, а суффикс % типа переменной (для типа переменной - Integer) записывается непосредственно за переменной MyType.

Массивы VBA

Источник: https://www.lessons-tva.info/

 

В VBA применяются два вида переменных:

§ простые переменные;

§ переменные массивов.

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

 

Для обработки элементов в массиве можно использовать циклические структуры. При обработке элементов массива циклические структуры по сравнению с линейными структурами значительно снижают количество операторов в программе. Для обработки данных массивов применяют такие циклические структуры как For…Next и For Each...Next.

 

Массивы могут быть одномерными и многомерными, статическими и динамическими. К одномерным статическим массивам относится простой список данных (элементов) одного типа. Объявление массива производится следующим образом: Dim MyAr(5) As Integer - это одномерный массив хранит 6 элементов целочисленных значений. Где элемент с номером 5 является верхней границей массива или максимальным номером ячейки памяти.

 

Нижней границе массива по умолчанию соответствует элемент с номером 0 (минимальный номер ячейки памяти). Значение нижней границы массива можно изменить с помощью ключевого слова To. Например, в Dim MyAr(2 To 5) As String нижней границе массива установлено значение 2. Элементы массива имеют номера (индексы) 2, 3, 4, 5, значения которых (любые целые числа) размещаются в оперативной памяти последовательно. Необходимо отметить, что каждому элементу массива присваивается индекс. В массиве VBA допускается использовать до 60 индексов.

 

Индекс определяет положение элемента в массиве. Что касается значений элементов, то они могут быть любыми значениями, которые соответствуют объявленному типу данных. Для определения значений элементов массива используют следующую конструкцию: Переменная_Массива (индекс) = Значение.

 

Для объявления статического многомерного массива (матрицы) в поле индекса необходимо указать несколько индексов. Например, для двумерного массива (двумерной таблицы) в поле индекса надо указать два индекса: количество столбцов и строк.

Dim MyAr(5, 3) As String - это двумерный массив из 24 элементов (6 столбцов и 4 строк).

 

Динамический массив - это массив, при объявлении которого не указаны его границы в явном виде. Например, Dim MyAr() As String. Для управления верхней и нижней границ массива используют ключевые слова ReDim, т.е. ReDim перераспределяет размеры массива. Инструкция ReDim имеет следующую конструкцию: ReDim [Preserve] ИмяПеременной (индексы) As ТипДанных. Где Preserve (не является обязательной инструкцией) - это ключевое слово, которое обеспечивает сохранность значений в текущем массиве при изменении размера массива инструкцией ReDim.

 

Пример динамического массива:

Dim MyAr() As String ' объявление динамического массива.

Dim intCounter As Variant ' объявление переменной.

ReDim MyAr (2 To 5) As Integer ' определение размера одномерного массива из 4 элементов с нижней границей 2.

For intCounter = 2 To 5 ' в цикле For...Next переменной intCounter присваивается последовательно значения от 2 до 5.

<блок операторов>

Next

 

В VBA Access чаще приходится работать не с массивами, а с коллекциями объектов. Коллекция объектов — это группа связанных объектов. Например, в Access предусмотрена коллекция AllForms, которая хранит все формы базы данных. Другими словами в объекте Application приложении Access есть объекты CurrentProjec и CodeProject, которые содержат множество коллекций, в том числе и коллекцию AllForms. Коллекция AllForms содержит объекты AccessObject для каждой формы. Необходимо отметить, что объекты AccessObject представляют формы, отчеты, таблицы и другие объекты.

 

В коллекциях предусмотрен стандартный набор свойств и методов. Метод Add служит для добавления нового элемента в коллекцию, а Remove, для удаления элемента из коллекции. Метод Item для получения доступа к требуемому элементу коллекции. Свойство Count предназначено для получения информации о количестве элементов в коллекции.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: