Visual Basic для приложений
![]() | |
Парадигма | Мультипарадигмальность |
---|---|
Разработчик | Майкрософт |
Впервые появился | 1993 год |
Стабильная версия | 7.1 ( Офис 2021 ) |
Дисциплина набора текста | Статический/динамический гибрид , сильный/слабый гибрид |
ТЫ | Microsoft Windows , macOS |
Лицензия | Коммерческое проприетарное программное обеспечение |
Веб-сайт | учиться |
Под влиянием | |
QuickBASIC , Visual Basic |
Visual Basic для приложений ( VBA ) — это реализация языка программирования , управляемого событиями, Visual Basic 6.0, встроенного в большинство настольных приложений Microsoft Office . Несмотря на то, что VBA основан на Visual Basic до .NET, который больше не поддерживается и не обновляется Microsoft (за исключением поддержки Microsoft «It Just Works», которая действует в течение всего срока службы поддерживаемых версий Windows, включая Windows 10 и Windows 11), VBA реализация в Office продолжает обновляться для поддержки новых функций Office. [1] [2] VBA используется для профессиональной разработки и разработки конечными пользователями благодаря своей простоте использования, обширной установленной базе пользователей Office и обширному наследию в бизнесе.
Visual Basic для приложений позволяет создавать пользовательские функции (UDF), автоматизировать процессы и получать доступ к Windows API и другим низкоуровневым функциям через библиотеки динамической компоновки (DLL). Он заменяет и расширяет возможности более ранних языков макропрограммирования для конкретных приложений, таких как от Word WordBASIC . Его можно использовать для управления многими аспектами главного приложения, включая управление функциями пользовательского интерфейса, такими как меню и панели инструментов, а также работу с настраиваемыми пользовательскими формами или диалоговыми окнами.
Как следует из названия, VBA тесно связан с Visual Basic и использует библиотеку времени выполнения Visual Basic. Однако код VBA обычно может работать только в главном приложении, а не как отдельная программа . Однако VBA может управлять одним приложением из другого с помощью OLE Automation . Например, VBA может автоматически создавать Microsoft Word отчет на основе данных Microsoft Excel , которые Excel автоматически собирает с опрашиваемых датчиков. VBA может использовать, но не создавать библиотеки ActiveX/COM , а в более поздних версиях добавлена поддержка модулей классов.
VBA встроен в большинство приложений Microsoft Office , включая Office для Mac OS X (кроме версии 2008), а также в другие приложения Microsoft, включая Microsoft MapPoint и Microsoft Visio . VBA также реализован, по крайней мере частично, в приложениях, опубликованных компаниями, отличными от Microsoft, включая ArcGIS , AutoCAD , Collabora Online , CorelDraw , Kingsoft Office , LibreOffice , [3] Солидворкс , [4] WordPerfect и UNICOM System Architect (который поддерживает VBA 7.1).
Дизайн
[ редактировать ]Код, написанный на VBA, компилируется [5] в Microsoft P-Code (псевдокод), собственный промежуточный язык , который ведущие приложения ( Access , Excel , Word , Outlook и PowerPoint ) сохраняют как отдельный поток в структурированного хранилища COM (например, файлах .doc
или .xls
) независимо от потоков документов. Затем выполняется промежуточный код [5] ( виртуальной машиной размещенной хост-приложением). Совместимость заканчивается с Visual Basic версии 6; VBA несовместим с Visual Basic .NET (VB.NET). VBA является собственностью Microsoft и, за исключением интерфейса COM, не является открытым стандартом .
Автоматизация
[ редактировать ]Взаимодействие с хост-приложением использует OLE Automation . Обычно хост-приложение предоставляет библиотеку типов и документацию по интерфейсу прикладного программирования (API), в которой документируется, как программы VBA могут взаимодействовать с приложением. Эту документацию можно просмотреть изнутри среды разработки VBA с помощью обозревателя объектов.
Программы Visual Basic для приложений, написанные для использования интерфейса OLE-автоматизации одного приложения, нельзя использовать для автоматизации другого приложения, даже если в этом приложении размещается среда выполнения Visual Basic, поскольку интерфейсы OLE-автоматизации будут разными. Например, программу VBA, написанную для автоматизации Microsoft Word, нельзя использовать с другим текстовым процессором, даже если в этом текстовом процессоре используется VBA.
И наоборот, несколько приложений можно автоматизировать с одного хоста, создав объекты приложения в коде VBA. Ссылки на различные библиотеки должны быть созданы в клиенте VBA до того, как какие-либо методы, объекты и т. д. станут доступны для использования в приложении. Это достигается за счет так называемого раннего или позднего связывания. Эти объекты приложения создают ссылку OLE на приложение при первом создании. Для корректной работы команды различным приложениям должны выполняться явно через эти объекты приложения.
Например, код VBA, написанный в Microsoft Access, может устанавливать ссылки на библиотеки Excel, Word и Outlook; это позволяет создать приложение, которое, например, запускает запрос в Access, экспортирует результаты в Excel и анализирует их, а затем форматирует выходные данные в виде таблиц в документе Word или отправляет их по электронной почте Outlook.
Программы VBA можно прикрепить к кнопке меню, макросу , сочетанию клавиш или событию OLE/COM, например открытию документа в приложении. Язык предоставляет пользовательский интерфейс в виде пользовательских форм, в которых могут размещаться элементы управления ActiveX для дополнительной функциональности.
межпроцессного взаимодействия Автоматизация включает в себя динамический обмен данными (DDE) и RealTimeData (RTD), которые позволяют вызывать сервер автоматизации модели компонентных объектов (COM) для получения динамических финансовых или научных данных или данных в реальном времени. [6]
Проблемы безопасности
[ редактировать ]Как и в любом распространенном языке программирования, макросы VBA могут быть созданы со злым умыслом. При использовании VBA большинство функций безопасности находятся в руках пользователя, а не автора. Параметры хост-приложения VBA доступны пользователю. Пользователь, запускающий любой документ, содержащий макросы VBA, может настроить программное обеспечение в соответствии с пользовательскими предпочтениями. Конечные пользователи могут защитить себя от атак, отключив запуск макросов в приложении или предоставив документу разрешение на запуск кода VBA, только если они уверены, что источнику документа можно доверять.
В феврале 2022 года Microsoft объявила о своем плане блокировать макросы VBA в файлах, загружаемых из Интернета по умолчанию, в различных приложениях Office из-за их широкого использования для распространения вредоносного ПО. [7]
История версий
[ редактировать ]- VBA был впервые запущен вместе с MS Excel 5.0 в 1993 году. Создание корпоративных решений с использованием Excel мгновенно завоевало успех среди разработчиков. Включение VBA в Microsoft Project, Access и Word, заменив Access BASIC и WordBASIC соответственно, сделало его более популярным.
- VBA 4.0 — следующий известный выпуск с полностью обновленной версией по сравнению с предыдущей. Выпущенный в 1996 году, он написан на C++ и стал объектно-ориентированным языком.
- VBA 5.0 был выпущен в 1997 году вместе со всеми продуктами MS Office 97. Единственным исключением был Outlook 97, в котором использовался VBScript .
- VBA 6.0 и VBA 6.1 были выпущены в 1999 году, в частности, с поддержкой надстроек COM в Office 2000. VBA 6.2 был выпущен вместе с Office 2000 SR-1.
- VBA 6.3 был выпущен после Office XP, VBA 6.4 последовал за Office 2003, а VBA 6.5 был выпущен вместе с Office 2007.
- Office 2010 включает VBA 7.0. В VBA 7 нет новых функций для разработчиков по сравнению с VBA 6.5, за исключением поддержки 64-битных версий. Однако после выпуска VBA 6.5/Office 2007 Microsoft прекратила лицензировать VBA для других приложений.
- Office 2013, Office 2016, Office 2019 и Office 2021 включают VBA 7.1.
Разработка
[ редактировать ]С 1 июля 2007 г. Microsoft больше не предлагает лицензии на распространение VBA новым клиентам. Microsoft намеревалась добавить языки на основе .NET в текущую версию VBA с момента выпуска .NET Framework . [8] из которых версии 1.0 и 1.1 включали технологию выполнения сценариев под названием Script for .NET Framework . [9] Пакет SDK для Visual Studio .NET 2002 и 2003 содержал отдельную среду разработки сценариев Visual Studio for Applications (VSA), которая поддерживала VB.NET. [10] [11] [12] Одной из его важных особенностей было то, что интерфейсы этой технологии были доступны через активные сценарии ( VBScript и JScript ), что позволяло даже приложениям, не поддерживающим .NET, писать сценарии с помощью языков .NET. Однако VSA устарела в версии 2.0 .NET Framework. [12] не оставляя четкого пути обновления для приложений, которым требуется поддержка активных сценариев (хотя «сценарии» могут быть созданы на C# , VBScript и других языках .NET, которые могут быть скомпилированы и выполнены во время выполнения с помощью библиотек, установленных как часть стандартного .NET). время выполнения).
Microsoft прекратила поддержку VBA для Microsoft Office 2008 для Mac . [13] [14] VBA был восстановлен в Microsoft Office для Mac 2011 . Microsoft заявила, что не планирует удалять VBA из версии Office для Windows. [15] [16]
В Office 2010 Microsoft представила VBA7, который содержит настоящий тип данных указателя: LongPtr. Это позволяет ссылаться на 64-битное адресное пространство. 64-разрядная версия Office 2010 не поддерживает общие элементы управления MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) или MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar), поэтому устаревшая версия. 32-битный код, перенесенный в 64-битный код VBA, который зависит от этих общих элементов управления, не будет работать. Это не повлияло на 32-разрядную версию Office 2010. [17] В конечном итоге Microsoft выпустила 64-разрядную версию MSComCtl с обновлением Office 2016 от 27 июля 2017 года. [18]
См. также
[ редактировать ]

- Инструменты Visual Studio для приложений
- Инструменты Visual Studio для Office
- Майкрософт Визуал Студия
- Microsoft FrontPage
- OpenOffice базовый
- ЛотосСкрипт
- Microsoft Power Форекс
Ссылки
[ редактировать ]- ^ «Совместимость 32-битной и 64-битной версий Office 2010» . msdn.microsoft.com .
- ^ о365devx. «Что нового в VBA в Office 2019» . docs.microsoft.com . Проверено 2 мая 2022 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ «Поддержка макросов VBA» . Фонд документов — LibreOffice . Проверено 3 января 2023 г.
- ^ «Справка по SolidWorks 2016 – VBA» . help.solidworks.com . Проверено 25 июля 2016 г.
- ^ Перейти обратно: а б «ACC: Visual/Access Basic — это и компилятор, и интерпретатор» . Майкрософт. 2012. Архивировано из оригинала 21 октября 2012 г.
- ^ «Как настроить и использовать функцию RTD в Excel» . msdn.microsoft.com .
- ^ «Microsoft будет блокировать макросы Office VBA по умолчанию» . Грань . Проверено 26 сентября 2022 г.
- ^ «Визуальная студия для приложений» . Архивировано из оригинала 17 декабря 2007 г.
- ^ «Знакомство с Visual Studio для приложений» . msdn.microsoft.com .
- ^ «Сценарий случается .NET» . msdn.microsoft.com .
- ^ «Microsoft объявляет о технологии разработки VSA» . Архивировано из оригинала 17 декабря 2007 г.
- ^ Перейти обратно: а б «Скрипты VSA в .NET» . Архивировано из оригинала 11 февраля 2007 г.
- ^ «WWDC: Microsoft обновляет универсальный статус приложений Mac» . Макмир . 07.08.2006 . Проверено 25 мая 2007 г.
- ^ «Что такое Microsoft Office и Office 365 – часто задаваемые вопросы» .
- ^ «Сообщения о закрытии VBA сильно преувеличены» .
- ^ «Разъяснение о поддержке VBA» . Архивировано из оригинала 11 апреля 2008 г.
- ^ «Совместимость 32-битной и 64-битной версий Office 2010» . msdn.microsoft.com .
- ^ «Примечания к выпуску выпусков Monthly Channel в 2017 году» . Learn.microsoft.com . Проверено 13 ноября 2022 г.