Aqui está uma resposta mais técnica e completa a uma pergunta antiga: Visual Basic for Applications (VBA) e Visual Basic (pré-.NET) não são apenas linguagens semelhantes, são a mesma linguagem. Especificamente:
- Eles têm a mesma especificação : A descrição independente da implementação do que a linguagem contém e do que ela significa. Você pode lê-lo aqui: [MS-VBAL]: especificação de idioma do VBA
- Eles têm o mesmo plataforma : ambos compilam com o Microsoft P-Code , que por sua vez é executado exatamente pela mesma máquina virtual, implementada na dll msvbvm [x.0] .dll.
Em um antigo livro de referência do VB que me deparei no ano passado, o autor (Paul Lomax) chegou a afirmar que 'VBA' sempre foi o nome do próprio idioma, seja usado em aplicativos independentes ou em contextos incorporados (como o MS Office ):
"Antes de prosseguirmos, vamos esclarecer um ponto fundamental. O Visual Basic for Applications (VBA) é a linguagem usada para programar no Visual Basic (VB). O próprio VB é um ambiente de desenvolvimento; o elemento de linguagem desse ambiente é o VBA. "
As pequenas diferenças
Hospedado vs. Independente : em termos práticos, quando a maioria das pessoas diz "VBA", significa especificamente "VBA quando usado no MS Office" e diz "VB6" como "VBA usado na última versão do VBA autônomo" compilador (ou seja, Visual Studio 6) ". O IDE e o compilador fornecidos com o MS Office são quase idênticos ao Visual Studio 6, com a limitação de que ele não permite a compilação para arquivos dll ou exe independentes. Por sua vez, isso significa que as classes definidas em projetos VBA incorporados não podem ser acessadas de consumidores COM não incorporados, porque não podem ser registradas.
Desenvolvimento contínuo : a Microsoft parou de produzir um compilador VBA independente com o Visual Studio 6, pois eles mudaram para o tempo de execução .NET como a plataforma preferida. No entanto, a equipe do MS Office continua mantendo o VBA e até lançou uma nova versão (VBA7) com uma nova VM (agora denominada VBA7.dll) começando com o MS Office 2010. A única grande diferença é que o VBA7 possui um 32- e versão de 64 bits e possui alguns aprimoramentos para lidar com as diferenças entre os dois, especificamente no que diz respeito às invocações externas da API.