Вот более технический и исчерпывающий ответ на старый вопрос: 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-запросов.
На страницах microsoft.com отсутствует краткая страница сравнения или они спрятали их Что ж. Достаточно сказать, что код VB 6.0 работает без изменений в VBA, если вы не ссылаетесь на COM-объекты, которые не поставляются с VBA, конечно. – Tomalak
VBA и Vb6 используют один и тот же файл dll, поэтому код работает и в одном. Однако есть что-то вроде объекта Printer в VB6, который не находится в VBA, и я не знаю, почему это так. В противном случае, я считаю, что нет никаких различий в базовых языках. –
Именно поэтому я считаю, что стоит добавить, что открытие документа Office несет почти такой же риск, как и открытие исполняемого файла. – Oorang