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

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

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

9 ответов


почти для всех целей программирования 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, хотя.


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

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

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

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

вопрос: что такое Visual Basic для приложений?

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

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


вот более технический и подробный ответ на старый вопрос: 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.


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

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

у вас есть доступ к документу office, для которого вы написали VBA-скрипт, и поэтому вы можете, например,

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

пример: задайте значение ячейки excel

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

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

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


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

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


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


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

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

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

из VBA Info

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


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

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


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