Вот более технический и подробный ответ на старый вопрос: Visual Basic для приложений (VBA) и Visual Basic (до .NET) - это не просто похожие языки, это один и тот же язык. В частности:
- Они имеют одинаковую спецификацию : независимое от реализации описание того, что содержит язык и что оно означает. Вы можете прочитать его здесь: [MS-VBAL]: спецификация языка VBA
- Они имеют одинаковую платформу : оба компилируются в Microsoft P-Code , который, в свою очередь, выполняется точно такой же виртуальной машиной, которая реализована в dll msvbvm [ X.0] .dll.
В старом справочнике по VB, с которым я сталкивался в прошлом году , автор (Пол Ломакс) даже утверждал, что «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.