Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а также во многие другие программные пакеты, такие как AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic.
Код, написанный на VBA, компилируется в промежуточный Microsoft P-код (байт-код), который затем выполняется виртуальной машиной, управляемой основным приложением (Excel, Word и др.), в то же время VBA не считается полноценно компилируемым языком, поскольку строки кода последовательно «интерпретируются» в процессе его выполнения. Как и следует из его названия, VBA близок к Visual Basic. VBA, будучи языком, построенным на COM, позволяет использовать все доступные в операционной системе COM объекты и компоненты ActiveX (например, возможно создание приложения на основе Microsoft Word VBA, использующего только средства Corel Draw).
VBA для начинающих — Первые шаги — Новый курс VBA (2)
В будущем Microsoft планирует заменить VBA на Visual Studio Tools for Applications (VSTA) — инструментарий расширения функциональности приложений, основанный на Microsoft .NET.
Источник: wiki2.org
Урок 1 по VBA — знакомство с Visual Basic for Applications
Макросы на VBA
Автор Coding На чтение 7 мин Просмотров 134 Опубликовано 07.10.2013
В это статье мы кратко познакомимся с языком VBA, который позволяет создавать макросы в программных продуктах Microsoft Office. Макросы – некий программный код, который позволяет реализовывать за вас поставленную задачу. В отличии от прикладных программ, макросы VBA как таковые не могут выполняться самостоятельно. Язык VBA – Visual Basic for Applications является родственником таких языков как VBScript, Visual Basic или простой Basic. Синтаксис и общие правила программирования практически идентичны.
По сути, зная язык VBScript сервера Windows Script Host, вы с легкостью освоите все премудрости VBA.
Отличия VBA от VBScript
Графический интерфейс – редактор VBA предоставляет минимальный набор объектов для создания графического интерфейса. Вы можете добавить в проект новую форму и поместить на нее нужные объекты, например, список, кнопку, текстовое поле и так далее. В VBScript для этих целей нужно прибегать к помощи стороннего объекта WindowSystemObject.
Внешние объекты – оба языка позволяют подключать функциональные возможности внешних объектов. Объект – в данном контексте это внешний библиотечный файл с набором методов (функций) и свойств (переменных). Однако, если вы создаете макрос в Word, то объект Word.Application будет доступен автоматически, если макрос работает в документе Excel, то автоматически доступен компонент Excel.Application. В Windows Script Host сценариях эти объекты нужно подключать самостоятельно (сделать ссылку).
Программирование макросов на VBA в Excel
Обработка событий – в VBA компоненты формы поддерживают не только методы и свойств, но и события, например, нажатие кнопки мыши. В WSH обработка событий не предусмотрена по определению, так как, там нужно отдельно подключать классы для создания графического интерфейс.
Практическое применение VBA
И так, открыв любой документ Microsoft Office, например, Word, мы может вызвать встроенный редактор Visual Basic (комбинация клавиш Alt + F11) и приступить к созданию макроса. Как упоминалось выше, в макросах можно подключать функциональные возможности внешних объектов, тем самым, получать доступ к элементам операционной системы, например, файловая система, реестр и так далее. Желательно, что бы в настройках был отключен автоматический запуск макроса при открытии документа, дабы дырявый или зловредный код не натворил лиха.
Однако, на сегодняшний момент, макросы и язык VBA как элементы администрирования теряют свое преимущество. Тот же Microsoft Access, который предназначен для работы с базами данных также практически не используется. Более актуальным является пакет 1С.
Общие синтаксические принципы языка VBA
- Регистр не играет роли – вы можете прописать оператор как в верхнем, так и в нижнем регистре, или вообще в вперемешку, например, dim, DIM, Dim, разницы нет.
- Комментарии – для комментирования строки, перед ней прописывается одинарная кавычка или ключевое слово REM.
- Максимальная длина любого имени (будь то имя переменной, константы или процедуры) составляет 255 знаков.
- В отличии от JavaScript, Jscript или С языков, в VBA в конце строки с операторами не нужно ставить запятой.
- Двоеточие – чтобы не прописывать каждый оператор в отдельной строке, их можно с помощью двоеточия прописать в одну строку, например: MsgBox «Строка1» : MsgBox «Строка2»
- Перенос операторов – если строка с операторами слишком длинная, то ее можно разделить на несколько при помощи символа подчеркивания и знака «строка»
Для демонстрации работы с макросами напишем такой пример. Откройте документ Microsoft Word и запустите редактор Visual Basic. Вам нужно создать новую форму и новый модуль (макрос). Цель – решение квадратного уравнения с изменяемыми значениями.
На поверхность формы надо добавить три полосы прокрутки и две текстовые метки. В редакторе кода для формы пропишите:
Option Explicit Sub Get_Result() Dim MyA As Byte, MyB As Byte, MyC As Byte Dim D, x, x1, x2, msg MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″ ‘ находим дискриминант D = MyB ^ 2 — 4 * MyA * MyC ‘Если дискриминант равен нулую — одно решение If D = 0 Then x = MyB / (2 * MyA) msg = «Уравнение имеет одно решение, x ровно: » 0 Then x1 = (-MyB + Sqr(D)) / (2 * MyA) x2 = (-MyB — Sqr(D)) / (2 * MyA) msg = «Уравнение имеет два решения» «x1 ровно: » vbCrLf x2 ровно: » Нет решения (комплексные числа)» End If Label2.Caption = msg End Sub Private Sub ScrollBar1_Change() Call Get_Result End Sub Private Sub ScrollBar2_Change() Call Get_Result End Sub Private Sub ScrollBar3_Change() Call Get_Result End Sub Private Sub UserForm_Initialize() Dim MyA As Byte, MyB As Byte, MyC As Byte ‘ параметры полос прокрутки ScrollBar1.Min = 1 ScrollBar1.Max = 20 ScrollBar2.Min = 1 ScrollBar2.Max = 30 ScrollBar3.Min = 1 ScrollBar3.Max = 40 ‘ параметры первого текстового поля Label1.FontSize = 15 Label1.ForeColor = H6400 MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″ End Sub
Option ExplicitSub Get_Result()Dim MyA As Byte, MyB As Byte, MyC As ByteDim D, x, x1, x2, msg MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″‘ находим дискриминантD = MyB ^ 2 — 4 * MyA * MyC’Если дискриминант равен нулую — одно решениеIf D = 0 Then x = MyB / (2 * MyA) msg = «Уравнение имеет одно решение, x ровно: » 0 Then x1 = (-MyB + Sqr(D)) / (2 * MyA) x2 = (-MyB — Sqr(D)) / (2 * MyA) msg = «Уравнение имеет два решения» «x1 ровно: » vbCrLf x2 ровно: » Нет решения (комплексные числа)»End If Label2.Caption = msgEnd SubPrivate Sub ScrollBar1_Change() Call Get_ResultEnd SubPrivate Sub ScrollBar2_Change() Call Get_ResultEnd SubPrivate Sub ScrollBar3_Change() Call Get_ResultEnd SubPrivate Sub UserForm_Initialize()Dim MyA As Byte, MyB As Byte, MyC As Byte ‘ параметры полос прокрутки ScrollBar1.Min = 1 ScrollBar1.Max = 20 ScrollBar2.Min = 1 ScrollBar2.Max = 30 ScrollBar3.Min = 1 ScrollBar3.Max = 40 ‘ параметры первого текстового поля Label1.FontSize = 15 Label1.ForeColor = H6400 MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″End Sub
Код VBA предельно прост, в процедуре Get_Result происходит проверка текущих значений для полос прокрутки, далее эти значения подставляются в формулу для нахождения дискриминанта. Результат решения будет выводиться на поверхности формы во вторую текстовую метку. Аналогичный пример я разбирал для языка VBScript в этой статье.
Источник: scriptcoding.ru
Введение в VBA: Макросы. (Часть 1 из 3)
Visual Basic for Application (VBA) — это язык программирования, который мы используем при написании макросов в Excel (и других программах Office). Написал макрос, запустил и сэкономил время на скучных повторяющихся задачах. Начать лучше с автоматизации небольших задач. Потом уже, набив руку, писать целые приложения и надстройки.
Когда в первый раз в жизни видишь код VBA, то становится дурно. Ничего не понятно. Но на самом деле любой VBA код не так сложно прочитать. Надо просто смотреть не на весь код сразу, а двигаться по строчкам и пытаться понять что делает каждая команда. Минимальных знаний английского хватит.
Программирование объектов в VBA — свойства и методы
VBA — это объектно-ориентированный язык программирования. Мы пишем код, который манипулирует объектами в Excel.
Объекты — это практически все, что вы можете себе представить в Excel: таблицы, диапазоны, диаграммы, сводные таблицы и т.д.
При написании кода VBA мы может читать/записывать свойства объектов или выполнять действия (методы) над объектами.
Посмотрите на примеры ниже и попробуйте догадаться что делает каждая из команд. Далее я расскажу что каждая из команд делает
Ещё одно понятие, с которым вы должны познакомиться — это объектная модель Excel. Это библиотека всех объектов в Excel. Как вы можете себе представить, это огромная библиотека!
Каждый объект имеет свои собственные свойства и методы, которые мы можем использовать. Есть три основных вещи, которые мы можем сделать со свойствами и методами.
# 1 — Чтение свойств