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

редактировать
Реализация языка программирования Microsoft Visual Basic 6
Visual Basic для приложений
Paradigm Мультипарадигма
Разработчик Microsoft
Впервые появился1993 г ​​.; 27 лет назад (1993)
Стабильный выпуск 7.1 (Office 2019 )
Дисциплина ввода Статический / динамический гибрид, Сильный / слабый гибрид
OS Microsoft Windows, Mac OS X
Лицензия Коммерческое проприетарное программное обеспечение
Под влиянием
QuickBASIC, Visual Basic

Visual Basic для приложений (VBA ) - это реализация языка событийного программирования от Microsoft Visual Basic 6, объявленного устаревшим. в 2008 году и является связанной интегрированной средой разработки (IDE). Хотя до.NET Visual Basic больше не поддерживается и не обновляется Microsoft, язык программирования VBA был обновлен в 2010 году с введением Visual Basic для приложений 7 в приложениях Microsoft Office. По состоянию на 2020 год VBA в течение двух лет оставался "самым страшным" языком для разработчиков (самым страшным языком в 2018 году был Visual Basic 6).

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

Как следует из названия, VBA тесно связан с Visual Basic и использует библиотеку времени выполнения Visual Basic. Однако код VBA обычно может выполняться только в главном приложении, а не как отдельная программа. Однако VBA может управлять одним приложением из другого с помощью OLE Automation. Например, VBA может автоматически создавать отчет Microsoft Word из данных Microsoft Excel, которые Excel автоматически собирает с опрашиваемых датчиков. VBA может использовать, но не создавать, ActiveX / COM DLL, а в более поздних версиях добавлена ​​поддержка модулей классов.

VBA встроен в большинство приложений Microsoft Office, включая Office для Mac OS X (кроме версии 2008) и других приложений Microsoft, включая Microsoft MapPoint и Microsoft Visio. VBA также реализован, по крайней мере частично, в приложениях, опубликованных другими компаниями, помимо Microsoft, включая ArcGIS, AutoCAD, CorelDraw, LibreOffice, Reflection, SolidWorks, WordPerfect и UNICOM System Architect (который поддерживает VBA 7.1).

Содержание
  • 1 Дизайн
  • 2 Автоматизация
  • 3 Проблемы безопасности
  • 4 История версий
  • 5 Разработка
  • 6 См. Также
  • 7 Ссылки
Дизайн

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

И наоборот, несколько приложений могут быть автоматизированы с одного хоста путем создания объектов Application в коде VBA. Ссылки на различные библиотеки должны быть созданы в клиенте VBA, прежде чем какие-либо методы, объекты и т. Д. Станут доступны для использования в приложении. Это достигается за счет так называемого раннего или позднего связывания. Эти объекты приложения создают ссылку OLE на приложение при первом создании. Команды для различных приложений должны выполняться явно через эти объекты приложений для правильной работы.

Например, код VBA, написанный в Microsoft Access, может устанавливать ссылки на библиотеки Excel, Word и Outlook; это позволяет создать приложение, которое --- например --- выполняет запрос в Access, экспортирует результаты в Excel и анализирует их, а затем форматирует выходные данные в виде таблиц в документе Word или отправляет их по электронной почте Outlook.

Программы VBA могут быть прикреплены к кнопке меню, макросу , сочетанию клавиш или событию OLE / COM, например открытию документа в приложение. Язык предоставляет пользовательский интерфейс в виде пользовательских форм, которые могут содержать элементы управления ActiveX для дополнительных функций.

Межпроцессное взаимодействие автоматизация включает динамический обмен данными (DDE) и RealTimeData (RTD), который позволяет вызывать компонентную объектную модель ( COM) сервер автоматизации для динамических или финансовых или научных данных в реальном времени.

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

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

История версий
  • Впервые VBA был запущен с MS Excel 5.0 в 1993 году. Создание корпоративных решений с использованием Excel стало мгновенным успехом среди разработчиков. Включение VBA в Microsoft Project, Access и Word вместо AccessBASIC и 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 включают VBA 7.1.
  • Замена JavaScript API: Microsoft уходит из VBA в пользу JavaScript API для Office (следовательно, также для Office в Интернете и Office для Mac).
Разработка

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

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

В 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. VBA7 не включает 64-разрядную версию общих элементов управления, поэтому у разработчиков нет возможности перенести приложения VBA на 64-разрядную версию. Microsoft предлагает обратиться к поставщику программного обеспечения для получения 64-разрядных версий элементов управления VBA.

См. Также
В Викиверситете есть учебные ресурсы о Visual Basic для приложений
В Викиуниверситете есть дополнительная информация по теме: Visual Basic для приложений
Ссылки
Последняя правка сделана 2021-06-18 04:00:15
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте