Visual Basic для приложений (VBA) - это объектно-ориентированный язык программирования, управляемый событиями, для написания макросов, который используется для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос касается программирования какого-либо приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].

Visual Basic для приложений (VBA) - это язык программирования, управляемый событиями, который был впервые представлен Microsoft в 1993 году, чтобы дать Excel 5.0 более надежный объектно-ориентированный язык для написания макросов и автоматизации использования Excel. Он был представлен в Access, PowerPoint и Word в Office 97. Язык и среда его выполнения быстро стали зрелыми и начали лицензироваться и использоваться в продуктах, выходящих за рамки приложений Microsoft Office.

Использование тегов

  • VBA не эквивалентен VB.NET; если вы работаете в Visual Studio, используйте vb.net.
  • Если ваш вопрос касается программирования Excel, Access, Word, Outlook, PowerPoint или Project, также используйте соответствующий тег приложения: excel, ms-access, ms-word, outlook, powerpoint или microsoft-project.
  • Хотя код, написанный на VBA, обычно называется "макросом", тег макросане следует использовать для общих вопросов VBA. Пожалуйста, посетите страницу записи макросов вики для получения дополнительной информации о правильном использовании.
  • Если ваш код предназначен для приложения Office ( Excel, Word, Outlook, PowerPoint и т. Д.), Пометьте его одним из тегов для конкретного приложения, указанных ниже, в дополнение к этому.
  • Ожидается, что вопросы с меткой vba должны либо содержать код VBA, либо спрашивать, как использовать конкретный код VBA.

Обзор

VBA является производным от классического языка программирования Visual Basic (версия 5.0 и более поздняя 6.0) и использует подмножество функциональных возможностей этого языка. Однако его выполнение полностью зависит от интерфейса хост-приложения и не может работать за пределами этой среды. В отличие от классического VB, VBA не может создавать независимые исполняемые файлы или библиотеки DLL. Библиотеки Visual Basic для взаимодействия с Windows и ее службами (такими как принтеры или буфер обмена) не являются частью VBA.

VBA 6 был выпущен в 1998 году и включает множество лицензированных хостов, среди которых: Office 2000–2007, AutoCAD и PI Processbook. Код VBA 6 будет одинаково хорошо работать на любом хосте, хотя базовые объекты, присущие каждому хосту, будут различаться. Хотя VBA по-прежнему встроен в приложения Microsoft Office, его "родительский", классический VB, перестал быть неотъемлемой частью платформы разработки Microsoft, когда Visual Basic .NET поставлялся с первой версией.NET framework в 2002 году.

VBA редко обновлялся, поскольку в него были включены только новые функции, которые позволяют ему оставаться совместимым с 64-разрядными версиями Windows и Office. Его объектные модели для конкретных приложений регулярно дополняются для поддержки новых функций, добавляемых в основные приложения Office.VBA 7 был выпущен в 2010 году для новой 64-разрядной версии Microsoft Office, выпущенной в 2010 году. В VBA 7 внесено несколько важных изменений, которые отличают его от VBA 6, а именно совместимость с 32-разрядной и 64-разрядной версиями. Офиса. Приложения, использующие VBA 7, должны решать проблемы как с обратной совместимостью, так и с 64-разрядной безопасностью.

В некоторых начальных выпусках приложений Office редактор VBA (VBE) недоступен, и программирование на VBA невозможно. Поддержка VBA также может быть заблокирована (не установлена) сетевыми администраторами в качестве меры безопасности.

Он был удален из Office для Mac 2008, однако Microsoft вернула VBA в Office 2011. Microsoft постоянно задавали вопросы о том, будет ли VBA полностью удален из Office, и неоднократно отвечали "нет", основной причиной являлось большое количество унаследованный код в использовании.

Это по-прежнему остается в силе даже после появления API JavaScript в Office 2013, хотя VBA поддерживается только в версиях Office для настольных приложений.

VBA наследует большую часть своего синтаксиса от языка программирования BASIC, где особенности языка, как правило, явно выражаются словами, например If ... Then ... End If, Function ... End Function. Он также имеет множество объектно-ориентированных функций, таких как классы и интерфейсы, и даже имеет некоторые динамические функции вVariant а также Objectтипы. Ниже приведена простая подпрограмма, которая генерирует окно сообщения и выводит сообщение в окно немедленного выполнения:

Sub HelloWorld()
    ' This is a comment
    Dim message As String
    message = "Hello World"
    MsgBox message
    Debug.Print "I just made a message box that says """ & message & """!"
End Sub

Связанные теги:

Часто задаваемые вопросы:

Ресурсы для начинающих:

Ссылки:

Дополнительная литература:

Общая информация и история VBA: