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, используйте .
  • Если ваш вопрос конкретно касается программирования Excel, Access, Word, Outlook, PowerPoint или Project, также используйте соответствующий тег приложения: , , , , или .
  • Хотя код, написанный на VBA, обычно называют «макросом», тег не следует использовать , а для общих вопросов по VBA. Пожалуйста, смотрите страницу входа вики для получения дополнительной информации о правильном использовании.
  • Если ваш код относится только к приложению Office ( Excel , Word , Outlook , PowerPoint и т. Д.), Отметьте тег это с одним из специфических для приложения тегов, найденных ниже, в дополнение к этому.
  • Ожидается, что вопросы с тегом должны либо содержать код 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, и неоднократно отвечала «нет», главная причина - большой объем используемого устаревшего кода.

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

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

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: