204 votos

Diferencia entre Visual Basic y VBA

¿Cuál es la diferencia entre ambos? Siempre he pensado que VBA es una versión algo "lisiada" de VB, pero cuando un amigo me preguntó el otro día no tenía ni idea de cuáles son las diferencias reales.

Además, cuando usas, por ejemplo, Excel, ¿es VB o VBA?

172voto

Tomalak Puntos 150423

Para casi todos los propósitos de programación, VBA y VB 6.0 son la misma cosa.

VBA no puede compilar su programa en un binario ejecutable. Siempre necesitarás el host (un archivo de Word y MS Word, por ejemplo) para contener y ejecutar tu proyecto. Tampoco podrás crear COM DLLs con VBA.

Aparte de eso, hay una diferencia en el IDE: el IDE de VB 6.0 es más potente en comparación. Por otro lado, tienes una estrecha integración de la aplicación anfitriona en VBA. Los objetos globales de la aplicación (como "ActiveDocument") y los eventos están disponibles sin declaración, por lo que la programación específica de la aplicación es sencilla.

Aun así, nada te impide encender Word, cargar el IDE de VBA y resolver un problema que no tiene ninguna relación con Word. No sé si hay algo que VB 6.0 pueda hacer (técnicamente) y VBA no. Sin embargo, estoy buscando una hoja de comparación en el MSDN.

46voto

fretje Puntos 6074

VBA significa Visual Basic para Aplicaciones y también el pequeño hermano de VB "para aplicaciones". En efecto, VBA está disponible en Excel, pero también en las demás aplicaciones ofimáticas.

Con VB, uno puede crear una aplicación independiente de Windows, lo que no es posible con VBA.

Sin embargo, los desarrolladores pueden "incrustar" VBA en sus propias aplicaciones, como un lenguaje de scripting para automatizar esas aplicaciones.

Editar : De la PREGUNTAS FRECUENTES SOBRE VBA :

Q. ¿Qué es Visual Basic para Aplicaciones?

A. Microsoft Visual Basic para Aplicaciones (VBA) es un entorno de programación incrustado diseñado para permitir a los desarrolladores crear soluciones personalizadas utilizando toda la potencia de Microsoft Visual Basic. Los desarrolladores que utilizan aplicaciones que alojan VBA pueden automatizar y ampliar la funcionalidad de la aplicación, acortando el ciclo de desarrollo de soluciones empresariales personalizadas.

Tenga en cuenta que VB.NET es incluso otro lenguaje, que sólo comparte sintaxis con VB.

40voto

Joshua Honig Puntos 5382

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.

15voto

Dario Puntos 26259

¿Quiere comparar VBA con VB-Classic (VB6..) o VB.NET?

VBA (Visual Basic for Applications) es un lenguaje scriptbasado en vb-classic e integrado en las aplicaciones de Microsoft Office. Creo que las características del lenguaje son similares a las de VB5 (sólo le faltan algunas funciones incorporadas), pero:

Usted tiene acceso al documento de oficina para el que escribió el VBA-script y así puede, por ejemplo

  • Escribir macros (=rutinas automatizadas para pequeñas tareas recurrentes en su trabajo de oficina)
  • Definir nuevas funciones para excel-cell-formula
  • Procesar los datos de la oficina

Ejemplo: Establecer el valor de una celda de Excel

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

VBC y -.NET no son lenguajes script. Los utilizas para escribir aplicaciones independientes con IDEs separados que no puedes hacer con VBA (VBA- sólo "existen" en Office)

VBA no tiene nada que ver con VB.NET (sólo tienen una sintaxis similar).

6voto

instanceof me Puntos 8419

Es VBA. VBA significa Visual Basic para Aplicaciones y se utiliza para las macros en los documentos de Office. No tiene acceso a las características de VB.NET, por lo que es más bien una versión modificada de VB6, con complementos para poder trabajar sobre el documento (como Worksheet en VBA para Excel).

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X