2009-06-14 4 views
183

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

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

ответ

149

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

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

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

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

+4

На страницах microsoft.com отсутствует краткая страница сравнения или они спрятали их Что ж. Достаточно сказать, что код VB 6.0 работает без изменений в VBA, если вы не ссылаетесь на COM-объекты, которые не поставляются с VBA, конечно. – Tomalak

+5

VBA и Vb6 используют один и тот же файл dll, поэтому код работает и в одном. Однако есть что-то вроде объекта Printer в VB6, который не находится в VBA, и я не знаю, почему это так. В противном случае, я считаю, что нет никаких различий в базовых языках. –

+36

Именно поэтому я считаю, что стоит добавить, что открытие документа Office несет почти такой же риск, как и открытие исполняемого файла. – Oorang

6

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

+7

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

3

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

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

40

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

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

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

Редактировать: Из VBA FAQ:

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

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

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

+0

Хм, он даже не спрашивал о VB.NET ... – Tomalak

+8

На самом деле, Microsoft относится к VB.Net как «Visual Basic». См. Http://msdn.microsoft.com/en-us/vbasic/default.aspx. – DOK

+16

Да. Это факт, который заставляет меня хотеть вытаскивать мои волосы каждый раз, когда я ищу VB или VBA-специфическую помощь через Google. Глупое маркетинговое решение. – Tomalak

13

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

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

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

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

Пример: Установить значение excel-cell

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

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

VBA не имеет ничего общего с VB.NET (у них просто есть аналогичный синтаксис).

10

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

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

+8

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

+0

@ AMissico, приятный отзыв. –

31

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

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

В old VB reference book I came across в прошлом году, автор (Paul Ломакс) даже утверждал, что «VBA» всегда был названием самого языка, используется ли в автономных приложениях или во встроенных контекстах (например, MS Office ..):

«Прежде чем мы пойдем дальше, давайте просто прояснить на фундаментальной точки Visual Basic для приложений (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

Я вспоминаю ту же цитату в книге Ломакса, но, учитывая все другие утверждения об обратном на этом форуме, в Википедии и т. Д., Это заставляет меня задаться вопросом, кто прав, и почему есть разногласия! Lomax также написал (стр. 3): «VBA - это тот же язык, независимо от того, используете ли вы его для создания приложения VB или для автоматизации какой-либо задачи в Word или Excel». Кроме того, «VBA является размещенным языком и частью семейства инструментов VB для разработки». –

+0

Если вы выберете справку в VB6, перейдите на ссылку VBA language. VB6, как и Word, размещает язык VBA. Поскольку объекты приложения - это глобальные объекты (стандарт автоматизации). VB6 предоставляет объект App, подходящий для автономных программ. Word предоставляет объект App для макросов Word. Обратите внимание, что язык идентичен, любая ссылка на пропущенные объекты - это размещение предоставленных объектов, таких как объект принтера VB6, - это не часть языка, а хоста. – ACatInLove

4

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

Значит, вы можете писать код VBA только в VB.

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

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

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

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 и ActiveX EXE, которые могут работать автономно или в других программах, таких как MS Office или Windows.

+0

В VB6 размещен язык VBA. Он идентичен. VB6, как хост, предоставляет определенные объекты, которые Word делает при его хостинге. – ACatInLove