Diferencia entre Visual Basic 6.0 y VBA


Cuál es la diferencia entre los dos. Siempre pensé que VBA es una versión algo 'paralizada' de VB, pero cuando un amigo me preguntó el otro día no tenía idea de cuáles eran las diferencias reales.

También, cuando se utiliza, por ejemplo, Excel, es que VB o VBA ?

 196
Author: Tomalak, 2009-06-14

9 answers

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á el host (un archivo de Word y MS Word, por ejemplo) para contener y ejecutar su proyecto. Tampoco podrá crear DLL COM con VBA.

Aparte de eso, hay una diferencia en el IDE - el IDE VB 6.0 es más poderoso en comparación. Por otro lado, tiene una estrecha integración de la aplicación host 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.

Aún así, nada le impide encender Word, cargar el IDE de VBA y resolver un problema que no tiene relación con Word en absoluto. No estoy seguro de si hay algo que VB 6.0 puede hacer (técnicamente), y VBA no puede. Estoy buscando una hoja de comparación en el MSDN sin embargo.

 161
Author: Tomalak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 18:33:48

VBA significa Visual Basic para Aplicaciones y también lo es el pequeño hermano de scripting "para aplicaciones" de VB. VBA está disponible en Excel, pero también en otras aplicaciones de office.

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

Sin embargo, es posible que los desarrolladores "incrusten" VBA en sus propias aplicaciones, como un lenguaje de scripting para automatizar esas aplicaciones.

Editar: Desde el VBA Preguntas frecuentes :

P. ¿Qué es Visual Basic para Aplicaciones?

R. Microsoft Visual Basic para aplicaciones (VBA) es un entorno de programación integrable 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 solo comparte sintaxis con VB.

 42
Author: fretje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 18:05:11

Aquí hay una respuesta más técnica y completa a una vieja pregunta: Visual Basic para aplicaciones (VBA) y Visual Basic (pre-.NET) no son solo idiomas similares, son el mismo idioma. Específicamente:

  • Tienen la misma especificación : La descripción independiente de la implementación de lo que el lenguaje contiene y lo que significa. Puedes leerlo aquí: [MS-VBAL]: Especificación del lenguaje VBA
  • Tienen la misma plataforma : ambos compilan a Microsoft P-Code , que a su vez es ejecutado por la misma máquina virtual, que se implementa en el dll msvbvm [x.0].DLL.

En un antiguo libro de referencia de VB que encontré el año pasado, el autor (Paul Lomax) incluso afirmó que' VBA ' siempre ha sido el nombre del lenguaje en sí, ya sea utilizado en aplicaciones independientes o en contextos incrustados (como MS Office):

" Antes de ir más lejos, vamos a aclarar sobre 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 diferencias menores

Hosted vs. stand-alone: En términos prácticos, cuando la mayoría de la gente dice "VBA" significan específicamente "VBA cuando se usa en MS Office", y dicen "VB6" para significar "VBA utilizado en la última versión del compilador de VBA independiente (i. e. Visual Studio 6)". El IDE y compilador incluido con MS Office es casi idéntico a Visual Studio 6, con la limitación de que no permite la compilación de archivos dll o exe independientes. Esto a su vez significa que las clases definidas en proyectos de VBA incrustados no son accesibles desde consumidores COM no incrustados, porque no se pueden registrar.

Desarrollo continuo: Microsoft dejó de producir un compilador VBA independiente con Visual Studio 6, ya que cambiaron a. NET tiempo de ejecución como la plataforma de elección. Sin embargo, el equipo de MS Office continúa manteniendo VBA, e incluso lanzó una nueva versión (VBA7) con una nueva VM (ahora 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 API externas.

 33
Author: Joshua Honig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-24 13:46:10

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

VBA (Visual Basic para aplicaciones) es un lenguaje de script basado en vb-classic incrustado en aplicaciones de Microsoft Office. Creo que sus características del lenguaje son similares a las de VB5 (solo le faltan algunas funciones incorporadas), pero:

Tiene acceso al documento de Office para el que escribió el script VBA y, por lo tanto, puede, por ejemplo,

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

Ejemplo: Establecer el valor de una celda de excel

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

VBC y -. NET no son lenguajes de script. Los usa para escribir aplicaciones independientes con IDES separados que no puede hacer con VBA (los scripts VBA simplemente "existen" en Office)

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

 14
Author: Dario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 18:00:47

En realidad, VBA se puede usar para compilar DLL. Las ediciones Office 2000 y Office XP Developer incluyeron un editor de VBA que podría ser utilizado para hacer archivos DLL para su uso como complementos COM.

Esta funcionalidad se eliminó en versiones posteriores (2003 y 2007) con el advenimiento del software VSTO (VS Tools for Office), aunque obviamente aún podría crear complementos COM de manera similar sin el uso de VSTO (o VS.Net) usando VB6 IDE.

 10
Author: Skip R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-30 10:04:42

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

 6
Author: instanceof me,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 17:50:12

VB no es un lenguaje. VB es un programa que aloja VBA, al igual que Office aloja VBA. VB es un conjunto de objetos de aplicaciones, al igual que Word y Excel, y un paquete de formularios, al igual que en Office.

Por lo que solo puede escribir código VBA en VB.

PS esta información está en la pestaña INFO en la página VB question para VB.

Desde la información de VBA

VBA 6, fue enviado en 1998 e incluye una miríada de hosts con licencia, entre ellos: Office 2000 - 2010, AutoCAD, PI Processbook, y el stand-alone Visual Basic 6.0

 5
Author: Serenity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-10 22:52:14

VBA significa Visual Basic Para Aplicaciones y es una implementación de Visual Basic destinada a ser utilizada en la suite Ofimática.

La diferencia entre ellos es que VBA está incrustado dentro de documentos de Office (es una característica de Office). VB es el ide / lenguaje para desarrollar aplicaciones.

 4
Author: Victor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 17:50:59

VB (Visual Basic solo hasta 6.0) es un superconjunto de VBA (Visual Basic para Aplicaciones). Sé que otros han eludido esto, pero entiendo que la semántica (es decir, el vocabulario) de VBA está incluida en VB6 (excepto para objetos específicos de productos de oficina), por lo tanto, VBA es un subconjunto de VB6. La sintaxis (es decir, el orden en el que se escriben las palabras) es exactamente la misma en VBA que lo sería en VB6, pero la diferencia es que los objetos disponibles para VBA o VB6 son diferentes porque tienen diferentes propósitos. Específicamente, el propósito de VBA es automatizar programáticamente las tareas que se pueden hacer en MS Office, mientras que el propósito de VB6 es crear EXE estándar, controles ActiveX, DLL ActiveX y EXES ActiveX que pueden funcionar de forma independiente o en otros programas como MS Office o Windows.

 1
Author: user65795,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-28 04:14:38