Разница между Visual Basic 6.0 и VBA

183

В чем разница между ними. Я всегда думал, что VBA является несколько "искалеченной" версией VB, но когда друг спросил меня на днях, я понятия не имел, каковы фактические различия.

Кроме того, когда вы используете, например, Excel, это VB или VBA?

Теги:
vb6

9 ответов

165
Лучший ответ

Для почти всех целей программирования VBA и VB 6.0 - это одно и то же.

VBA не может скомпилировать вашу программу в исполняемый двоичный файл. Вам всегда понадобится хост (например, файл Word и MS Word), чтобы содержать и выполнять ваш проект. Вы также не сможете создавать COM-библиотеки с помощью VBA.

Кроме того, в среде IDE есть разница - более эффективная по сравнению с IDE VB 6.0 IDE. С другой стороны, у вас есть тесная интеграция приложения-хозяина в VBA. Глобальные объекты приложения (например, "ActiveDocument" ) и события доступны без объявления, поэтому программирование, специфичное для приложения, выполняется прямо.

Тем не менее, ничто не мешает вам запускать Word, загружать VBA IDE и решать проблему, которая не имеет никакого отношения к Word. Я не уверен, есть ли что-то, что может сделать VB 6.0 (технически), и VBA не может. Я ищу таблицу сравнения на MSDN, хотя.

  • 6
    Кажется, на страницах microsoft.com нет краткой страницы сравнения, или они их хорошо скрывали. Достаточно сказать, что код VB 6.0 работает без изменений в VBA, если, конечно, вы не сделаете ссылки на COM-объекты, которые не поставляются с VBA.
  • 7
    VBA и Vb6 используют один и тот же файл dll, поэтому код работает и в них. Однако в VB6 есть что-то вроде объекта Printer, которого нет в VBA, и я не знаю, почему это так. В противном случае, я считаю, что нет различий в базовых языках.
Показать ещё 8 комментариев
42

VBA означает Visual Basic для приложений, а также небольшой скрипт сценария для приложений VB. VBA действительно доступен в Excel, но также и в других офисных приложениях.

С VB можно создать автономное приложение Windows, что невозможно с помощью VBA.

Однако разработчики могут "внедрять" VBA в свои собственные приложения в качестве языка сценариев для автоматизации этих приложений.

Изменить. Из Вопросы VBA:

Q. Что такое Visual Basic для приложений?

A. Microsoft Visual Basic для приложений (VBA) - это встраиваемая среда программирования, предназначенная для того, чтобы разработчики могли создавать пользовательские решения, используя всю мощь Microsoft Visual Basic. Разработчики, использующие приложения, которые размещают VBA, могут автоматизировать и расширить функциональность приложения, сокращая цикл разработки пользовательских бизнес-решений.

Обратите внимание, что VB.NET - это еще один язык, который разделяет только синтаксис с VB.

  • 0
    Хм, он даже не спрашивал про VB.NET ...
  • 8
    На самом деле Microsoft называет VB.Net «Visual Basic». См. Msdn.microsoft.com/en-us/vbasic/default.aspx .
Показать ещё 7 комментариев
33

Здесь более технический и исчерпывающий ответ на старый вопрос: Visual Basic для приложений (VBA) и Visual Basic (pre -.NET) - это не просто похожие языки, они являются одним и тем же языком. В частности:

  • Они имеют одинаковую спецификацию: независимое от реализации описание того, что содержит язык и что это значит. Вы можете прочитать его здесь: [MS-VBAL]: Спецификация языка VBA
  • У них есть одна и та же платформа: они компилируются в Microsoft P-Code, который, в свою очередь, выполняется той же самой виртуальной машиной, которая реализован в dll msvbvm [x.0].dll.

В старом справочнике VB, с которым я столкнулся в прошлом году, автор (Пол Ломакс) даже утверждал, что 'VBA' всегда был имя самого языка, независимо от того, используется ли оно в автономных приложениях или во встроенных контекстах (например, MS Office):

"Прежде чем идти дальше, давайте просто проясним фундаментальную точку. Visual Basic for Applications (VBA) - это язык, используемый для программирования в Visual Basic (VB). Сам VB - это среда разработки, языковой элемент этой среды это VBA."

Небольшие различия

Хостинг и автономный. В практических терминах, когда большинство людей говорят "VBA", они специально означают "VBA при использовании в MS Office", и они говорят, что "VB6" означает "VBA используется в последней версии автономного компилятора VBA (т.е. Visual Studio 6)". IDE и компилятор в комплекте с MS Office почти идентичны Visual Studio 6 с ограничением, что он не позволяет компиляции автономных DLL или EXE файлов. Это по очереди означает, что классы, определенные во встроенных проектах VBA, недоступны для не-встроенных пользователей COM, потому что они не могут быть зарегистрированы.

Продолжение разработки. Microsoft перестала выпускать автономный компилятор VBA с Visual Studio 6, поскольку они переключились на среду выполнения .NET как на платформу выбора. Тем не менее, команда MS Office продолжает поддерживать VBA и даже выпустила новую версию (VBA7) с новой виртуальной машиной (теперь просто называемой VBA7.dll), начиная с MS Office 2010. Единственное существенное отличие заключается в том, что VBA7 имеет 32- и 64-битная версия, и имеет несколько улучшений для обработки различий между ними, особенно в отношении внешних API-запросов.

  • 2
    Я вспоминаю ту же самую цитату в книге Ломакса, но, учитывая все другие утверждения об обратном на этом форуме, в Википедии и т. Д., Я удивляюсь, кто прав и почему есть разногласия! Ломакс также писал (стр. 3): «VBA - это один и тот же язык, используете ли вы его для создания приложения VB или для автоматизации какой-либо задачи в Word или Excel». Кроме того, «VBA является размещенным языком и частью семейства инструментов разработки VB».
  • 1
    Если вы выбираете помощь в VB6, вы переходите к справочнику по языку VBA. VB6, как и Word, поддерживает язык VBA. В качестве объектов приложения используются глобальные объекты (стандарт автоматизации). VB6 предоставляет объект App, подходящий для автономных программ. Word предоставляет объект App для макросов Word. Обратите внимание, что язык идентичен, любая ссылка на отсутствующие вещи относится к предоставленным объектам, таким как объект принтера VB6 - это не часть языка, а хост.
14

Вы хотите сравнить VBA с VB-Classic (VB6..) или VB.NET?

VBA (Visual Basic для приложений) - это vb-классический script язык, встроенный в приложения Microsoft Office. Я думаю, что его языковые функции аналогичны функциям VB5 (в нем просто не хватает некоторых встроенных функций), но:

У вас есть доступ к офисному документу, на который вы написали VBA- script, и, таким образом, вы можете, например,

  • Пишите макросы (= автоматические процедуры для небольших повторяющихся задач в офисе)
  • Определить новые функции для формулы excel-cell
  • Данные о производственных процессах

Пример: установите значение ячейки excel

ActiveSheet.Cells("A1").Value = "Foo"

VBC и -.NET не являются script языками. Вы используете их для написания автономных приложений с отдельной IDE, которую вы не можете сделать с VBA (VBA-скрипты просто "существуют" в Office)

VBA не имеет ничего общего с VB.NET(они просто имеют похожий синтаксис).

10

Фактически VBA может использоваться для компиляции DLL. Издания Office 2000 и Office XP Developer включали редактор VBA, который можно было использовать для создания библиотек DLL для использования в качестве добавлений COM.

Эта функциональность была удалена в более поздних версиях (2003 и 2007) с появлением программного обеспечения VSTO (VS Tools for Office), хотя, очевидно, вы все равно могли бы создавать COM-аддоны аналогичным образом без использования VSTO (или VS.Net) используя VB6 IDE.

  • 10
    Эта функциональность не была удалена. Microsoft просто не обновляла «Office XP Developer» для поддержки более поздних версий. Вы все еще можете установить разработчика, и он работает без проблем. Это просто не поддерживается Microsoft. Это связано с тем, что VBA, поставляемая с 2003/2007, все еще является той же версией VBA, что и XP / 2002.
  • 0
    @AMissico, хороший отзыв, спасибо.
6

Это VBA. VBA означает Visual Basic для приложений и используется для макросов в документах Office. Он не имеет доступа к функциям VB.NET, поэтому он больше похож на модифицированную версию VB6 с надстройками, позволяющими работать с документом (например, Worksheet в VBA для Excel).

  • 7
    Нет, VBA не является модифицированной версией VB5 / 6, скорее это подмножество. Взгляните на обозреватель объектов в IDE VB5 / 6, и вы увидите полную библиотеку объектов VBA для использования и злоупотребления. Тем не менее, VBA (как правило, хотя и не обязательно) имеет дополнительные библиотеки объектов, которые загружаются по умолчанию и предоставляют глобальные объекты по умолчанию, которые относятся к среде хоста du jour.
5

VB не является языком. VB - это программа, в которой размещается VBA, так же, как Office размещает VBA. VB - это набор объектов App, как и Word и Excel, и пакет форм, как и в Office.

Таким образом, вы можете писать код VBA только в VB.

PS эта информация находится на вкладке INFO на странице VB question для VB.

Из информации VBA

VBA 6, был отправлен в 1998 году и включает в себя множество лицензированных хостов, среди которых: Office 2000 - 2010, AutoCAD, PI Processbook и автономный Visual Basic 6.0

  • 2
    Этот ответ совершенно неверный. VBA не VB6, это отдельные объекты, которые имеют много общих возможностей. Эта короткая цитата ничего не доказывает. Сказать, что это не язык, потому что он работает на хосте, также осуждает такие языки, как JavaScript, не на языках, что просто не соответствует действительности. Кроме того, программы VB6 могут быть скомпилированы в автономные программы, что делает их не требующими какого-либо хоста (кроме Windows, то есть).
4

VBA означает Visual Basic для приложений и его реализацию Visual Basic, предназначенную для использования в Office Suite.

Разница между ними заключается в том, что VBA встроен в документы Office (его функция Office). VB - это идеал/язык для разработки приложений.

1

VB (только Visual Basic до 6.0) является надмножеством VBA (Visual Basic для приложений). Я знаю, что другие немного не согласны с этим, но я понимаю, что семантика (то есть лексика) VBA включена в VB6 (за исключением объектов, специфичных для продуктов Office), поэтому VBA является подмножеством VB6. Синтаксис (то есть порядок написания слов) в VBA точно такой же, как и в VB6, но разница в объектах, доступных для VBA или VB6, различна, поскольку они имеют разные цели. В частности, целью VBA является автоматическая автоматизация задач, которые могут быть выполнены в MS Office, в то время как VB6 предназначен для создания стандартных EXE, ActiveX Controls, ActiveX DLL и EXE-приложений ActiveX, которые могут работать автономно или в других программах, таких как MS Office или Windows.

  • 0
    VB6 содержит язык VBA. Это идентично. VB6, как хост, предоставляет определенные объекты, как Word, когда его хостинг.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню