stringtranslate.com

Visual Basic для приложений

Visual Basic для приложений ( VBA ) — это реализация языка программирования , управляемого событиями, Visual Basic 6.0, встроенного в большинство настольных приложений Microsoft Office . Хотя реализация VBA в Office основана на версии Visual Basic, предшествующей .NET, которая больше не поддерживается и не обновляется, она продолжает обновляться для поддержки новых функций Office. [1] [2] VBA используется для профессиональной разработки и разработки конечными пользователями благодаря своей простоте использования, обширной установленной базе пользователей Office и обширному наследию в бизнесе.

Visual Basic для приложений позволяет создавать пользовательские функции (UDF), автоматизировать процессы и получать доступ к Windows API и другим низкоуровневым функциям через библиотеки динамической компоновки (DLL). Он заменяет и расширяет возможности более ранних языков макропрограммирования для конкретных приложений, таких как WordBASIC от Word . Его можно использовать для управления многими аспектами главного приложения, включая управление функциями пользовательского интерфейса, такими как меню и панели инструментов, а также работу с настраиваемыми пользовательскими формами или диалоговыми окнами.

Как следует из названия, 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] Reflection, [4] SolidWorks , [5] WordPerfect и UNICOM. Системный архитектор (поддерживает VBA 7.1).

Дизайн

Код, написанный на VBA, компилируется [6] в Microsoft P-Code (псевдокод), собственный промежуточный язык , который хост-приложения ( Access , Excel , Word , Outlook и PowerPoint ) сохраняют как отдельный поток в структурированном хранилище COM. файлы (например, .docили .xls) независимо от потоков документов. Затем промежуточный код выполняется [6] на виртуальной машине (размещаемой хост-приложением). Несмотря на сходство со многими старыми диалектами BASIC (особенно с Microsoft BASIC , от которого он косвенно произошел), VBA несовместим ни с одним из них, за исключением Visual Basic , куда можно напрямую импортировать исходный код модулей и классов VBA и который использует одни и те же библиотека и виртуальная машина. Совместимость заканчивается с 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) для получения динамических финансовых или научных данных или данных в реальном времени. [7]

Проблемы безопасности

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

В феврале 2022 года Microsoft объявила о своем плане блокировать макросы VBA в файлах, загружаемых из Интернета по умолчанию, в различных приложениях Office из-за их широкого использования для распространения вредоносного ПО. [8]

История версий

Разработка

С 1 июля 2007 г. Microsoft больше не предлагает лицензии на распространение VBA новым клиентам. Microsoft намеревалась добавить языки на основе .NET в текущую версию VBA с момента выпуска .NET Framework , [9] версии которого 1.0 и 1.1 включали технологию выполнения сценариев под названием Script for .NET Framework . [10] Пакет SDK для Visual Studio .NET 2002 и 2003 содержал отдельную среду разработки сценариев под названием Visual Studio for Applications (VSA), которая поддерживала VB.NET. [11] [12] [13] Одной из его важных особенностей было то, что интерфейсы этой технологии были доступны через активные сценарии ( VBScript и JScript ), что позволяло даже приложениям, не поддерживающим .NET, писать сценарии с помощью языков .NET. Однако VSA устарела в версии .NET Framework 2.0, [13] не оставив четкого пути обновления для приложений, которым требуется поддержка активных сценариев (хотя «сценарии» можно создавать на C# , VBScript и других языках .NET, которые можно компилируется и выполняется во время выполнения с помощью библиотек , установленных как часть стандартной среды выполнения .NET).

Microsoft прекратила поддержку VBA для Microsoft Office 2008 для Mac . [14] [15] VBA был восстановлен в Microsoft Office для Mac 2011 . Microsoft заявила, что не планирует удалять VBA из версии Office для Windows. [16] [17]

В 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. [18] В конечном итоге Microsoft выпустила 64-разрядную версию MSComCtl с обновлением Office 2016 от 27 июля 2017 года. [19]

Смотрите также

Рекомендации

  1. ^ «Совместимость 32-битной и 64-битной версий Office 2010» . msdn.microsoft.com .
  2. ^ о365devx. «Что нового в VBA в Office 2019». docs.microsoft.com . Проверено 2 мая 2022 г.{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  3. ^ «Поддержка макросов VBA». Фонд документов — LibreOffice . Проверено 3 января 2023 г.
  4. ^ «Руководство по VBA для Reflection Desktop» . docs.attachmate.com . Проверено 1 июля 2017 г.
  5. ^ «Справка SolidWorks 2016 – VBA» . help.solidworks.com . Проверено 25 июля 2016 г.
  6. ^ ab «ACC: Visual/Access Basic — это и компилятор, и интерпретатор». Майкрософт. 2012. Архивировано из оригинала 21 октября 2012 г.
  7. ^ «Как настроить и использовать функцию RTD в Excel» . msdn.microsoft.com .
  8. ^ «Microsoft будет блокировать макросы Office VBA по умолчанию» . Грань . Проверено 26 сентября 2022 г.
  9. ^ «Visual Studio для приложений». Архивировано из оригинала 17 декабря 2007 г.
  10. ^ «Представляем Visual Studio для приложений». msdn.microsoft.com .
  11. ^ «Сценарий случается .NET». msdn.microsoft.com .
  12. ^ «Microsoft снимает с себя обертку от технологии разработки VSA» . Архивировано из оригинала 17 декабря 2007 г.
  13. ^ ab «Скрипты VSA в .NET». Архивировано из оригинала 11 февраля 2007 г.
  14. ^ «WWDC: Microsoft обновляет универсальный статус приложений Mac» . Макмир . 7 августа 2006 г. Проверено 25 мая 2007 г.
  15. ^ «Что такое Microsoft Office и Office 365 – часто задаваемые вопросы» .
  16. ^ «Сообщения о кончине VBA сильно преувеличены» .
  17. ^ «Разъяснения о поддержке VBA» . Архивировано из оригинала 11 апреля 2008 г.
  18. ^ «Совместимость 32-битной и 64-битной версий Office 2010» . msdn.microsoft.com .
  19. ^ «Примечания к выпуску выпусков Monthly Channel в 2017 году» . Learn.microsoft.com . Проверено 13 ноября 2022 г.