He aquí una respuesta más técnica y completa a una vieja pregunta: Visual Basic para Aplicaciones (VBA) y Visual Basic (pre.NET) no son sólo lenguajes similares, son el mismo idioma. Específicamente:
- Tienen el mismo especificación : La descripción independiente de la implementación de lo que contiene el lenguaje y lo que significa. Puede leerla aquí: [MS-VBAL]: Especificación del lenguaje VBA
- Tienen el mismo plataforma : Ambos compilan a Código P de Microsoft , que a su vez es ejecutado por la misma máquina virtual, que está implementada en la dll msvbvm[x.0].dll.
En un viejo libro de referencia de VB que encontré el año pasado, el autor (Paul Lomax) llegó a afirmar que "VBA" siempre ha sido el nombre del propio lenguaje, tanto si se utiliza en aplicaciones independientes como en contextos integrados (como MS Office):
"Antes de seguir adelante, vamos a aclarar un punto fundamental. Visual Basic para Aplicaciones (VBA) es el lenguaje utilizado para programar en Visual Basic (VB). VB en sí es un entorno de desarrollo; el elemento de lenguaje de ese entorno es VBA".
Las pequeñas diferencias
Alojado o independiente : En términos prácticos, cuando la mayoría de la gente dice "VBA" se refiere específicamente a "VBA cuando se utiliza en MS Office", y dicen "VB6" para significar "VBA utilizado en la última versión del compilador VBA independiente (es decir, Visual Studio 6)". El IDE y el compilador incluidos en MS Office son casi idénticos a Visual Studio 6, con la limitación de que no permiten la compilación en archivos dll o exe independientes. Esto a su vez significa que las clases definidas en los proyectos VBA incrustados no son accesibles desde los consumidores COM no incrustados, porque no se pueden registrar.
Desarrollo continuo : Microsoft dejó de producir un compilador de VBA independiente con Visual Studio 6, ya que cambió al tiempo de ejecución de .NET como plataforma de elección. Sin embargo, el equipo de MS Office sigue manteniendo VBA, e incluso lanzó una nueva versión (VBA7) con una nueva VM (ahora sólo llamada VBA7.dll) a partir de MS Office 2010. La única diferencia importante es que VBA7 tiene una versión de 32 y 64 bits y tiene algunas mejoras para manejar las diferencias entre los dos, específicamente con respecto a las invocaciones de la API externa.