Paradigma | Multi-paradigma |
---|---|
Desarrollador | Microsoft |
Apareció por primera vez | 1993 ; Hace 28 años ( 1993) |
Lanzamiento estable | 7.1 ( Oficina 2019 ) |
Disciplina de mecanografía | Híbrido estático / dinámico, híbrido fuerte / débil |
SO | Microsoft Windows, macOS |
Licencia | Software propietario comercial |
Influenciado por | |
QuickBASIC, Visual Basic |
Visual Basic para Aplicaciones ( VBA) es una implementación de Microsoft 's orientado a eventos de programación de lenguaje de Visual Basic 6, la cual fue declarada herencia en 2008, y es un asociado entorno de desarrollo integrado (IDE). Aunque Microsoft ya no admite ni actualiza la versión anterior de.NET Visual Basic, el lenguaje de programación VBA se actualizó en 2010 con la introducción de Visual Basic para Aplicaciones 7 en las aplicaciones de Microsoft Office. A partir de 2020, VBA ha mantenido su posición como el lenguaje "más temido" para los desarrolladores durante 2 años, según algunos que participaron en encuestas realizadas por Stack Overflow. (El lenguaje más temido para 2018 fue Visual Basic 6).
Visual Basic para aplicaciones permite crear funciones definidas por el usuario (UDF), automatizar procesos y acceder a la API de Windows y otras funciones de bajo nivel a través de bibliotecas de vínculos dinámicos (DLL). Reemplaza y amplía las capacidades de los lenguajes de programación de macros específicos de aplicaciones anteriores, como WordBASIC de Word. Se puede utilizar para controlar muchos aspectos de la aplicación host, incluida la manipulación de funciones de la interfaz de usuario, como menús y barras de herramientas, y trabajar con formularios de usuario personalizados o cuadros de diálogo.
Como sugiere su nombre, VBA está estrechamente relacionado con Visual Basic y utiliza Visual Basic Runtime Library. Sin embargo, el código VBA normalmente solo se puede ejecutar dentro de una aplicación host, en lugar de como un programa independiente. Sin embargo, VBA puede controlar una aplicación desde otra utilizando Automatización OLE. Por ejemplo, VBA puede crear automáticamente un informe de Microsoft Word a partir de los datos de Microsoft Excel que Excel recopila automáticamente de los sensores encuestados. VBA puede usar, pero no crear, DLL ActiveX / COM, y las versiones posteriores agregan soporte para módulos de clase.
VBA está integrado en la mayoría de las aplicaciones de Microsoft Office, incluido Office para Mac OS X (excepto la versión 2008) y otras aplicaciones de Microsoft, como Microsoft MapPoint y Microsoft Visio. VBA también se implementa, al menos parcialmente, en aplicaciones publicadas por empresas distintas de Microsoft, incluidas ArcGIS, AutoCAD, CorelDraw, LibreOffice, Reflection, SolidWorks, WordPerfect y UNICOM System Architect (que admite VBA 7.1).
El código escrito en VBA se compila en Microsoft P-Code (pseudocódigo), un lenguaje intermedio propietario, que las aplicaciones host ( Access, Excel, Word, Outlook y PowerPoint ) almacenan como una secuencia separada en archivos de almacenamiento estructurado COM (p. Ej., .doc
o .xls
) independiente de los flujos de documentos. Luego, el código intermedio es ejecutado por una máquina virtual (alojada por la aplicación host). A pesar de su parecido con muchos dialectos BASIC antiguos (particularmente Microsoft BASIC, del cual se deriva indirectamente), VBA es incompatible con cualquiera de ellos excepto Visual Basic, donde el código fuente de los módulos y clases de VBA se puede importar directamente, y que comparte lo mismo biblioteca y máquina virtual. La compatibilidad termina con Visual Basic versión 6; VBA es incompatible con Visual Basic.NET (VB.NET). VBA es propiedad de Microsoft y, aparte de la interfaz COM, no es un estándar abierto.
La interacción con la aplicación de host utiliza la automatización OLE. Normalmente, la aplicación host proporciona una biblioteca de tipos y documentación de la interfaz de programación de aplicaciones (API) que documenta cómo los programas VBA pueden interactuar con la aplicación. Esta documentación se puede examinar desde dentro del entorno de desarrollo de VBA utilizando su Explorador de objetos.
Los programas de Visual Basic para Aplicaciones que están escritos para usar la interfaz de Automatización OLE de una aplicación no se pueden usar para automatizar una aplicación diferente, incluso si esa aplicación aloja el tiempo de ejecución de Visual Basic, porque las interfaces de Automatización OLE serán diferentes. Por ejemplo, un programa VBA escrito para automatizar Microsoft Word no se puede usar con un procesador de texto diferente, incluso si ese procesador de texto aloja VBA.
Por el contrario, se pueden automatizar varias aplicaciones desde un solo host creando objetos Aplicación dentro del código VBA. Las referencias a las diferentes bibliotecas deben crearse dentro del cliente VBA antes de que cualquiera de los métodos, objetos, etc. esté disponible para su uso en la aplicación. Esto se logra mediante lo que se conoce como enlace temprano o tardío. Estos objetos de aplicación crean el enlace OLE a la aplicación cuando se crean por primera vez. Los comandos a las diferentes aplicaciones deben realizarse explícitamente a través de estos objetos de aplicación para que funcionen correctamente.
Como ejemplo, el código VBA escrito en Microsoft Access puede establecer referencias a las bibliotecas de Excel, Word y Outlook; esto permite crear una aplicación que, por ejemplo, ejecuta una consulta en Access, exporta los resultados a Excel y los analiza, y luego formatea la salida como tablas en un documento de Word o los envía como un correo electrónico de Outlook.
Los programas de VBA se pueden adjuntar a un botón de menú, una macro, un atajo de teclado o un evento OLE / COM, como la apertura de un documento en la aplicación. El idioma proporciona una interfaz de usuario en forma de UserForms, que puede albergar controles ActiveX para una funcionalidad adicional.
La automatización de la comunicación entre procesos incluye el intercambio dinámico de datos (DDE) y RealTimeData (RTD), que permite llamar a un servidor de automatización del modelo de objetos componentes (COM) para obtener datos científicos o financieros dinámicos o en tiempo real.
Al igual que con cualquier lenguaje de programación común, las macros VBA se pueden crear con intenciones maliciosas. Con VBA, la mayoría de las funciones de seguridad están en manos del usuario, no del autor. El usuario puede acceder a las opciones de la aplicación de host de VBA. El usuario que ejecuta cualquier documento que contenga macros VBA puede preestablecer el software con las preferencias del usuario. Los usuarios finales pueden protegerse a sí mismos de los ataques al deshabilitar la ejecución de macros en una aplicación o al otorgar permiso para que un documento ejecute código VBA solo si están seguros de que se puede confiar en la fuente del documento.
A partir del 1 de julio de 2007, Microsoft ya no ofrece licencias de distribución de VBA a nuevos clientes. Microsoft tenía la intención de agregar lenguajes basados en.NET a la versión actual de VBA desde el lanzamiento de .NET Framework, cuyas versiones 1.0 y 1.1 incluían una tecnología de tiempo de ejecución de secuencias de comandos llamada Script para.NET Framework. Visual Studio.NET 2002 y 2003 SDK contenían un IDE de secuencias de comandos independiente llamado Visual Studio for Applications (VSA) que admitía VB.NET. Una de sus características importantes era que las interfaces de la tecnología estaban disponibles a través de Active Scripting ( VBScript y JScript ), lo que permitía que incluso las aplicaciones que no conocían.NET se escribieran a través de lenguajes.NET. Sin embargo, VSA quedó obsoleto en la versión 2.0 de.NET Framework, lo que no deja una ruta de actualización clara para las aplicaciones que desean compatibilidad con Active Scripting (aunque se pueden crear "scripts" en C #, VBScript y otros lenguajes.NET, que se pueden compilar y ejecutar en tiempo de ejecución a través de bibliotecas instaladas como parte del tiempo de ejecución estándar de.NET).
Microsoft eliminó el soporte de VBA para Microsoft Office 2008 para Mac. VBA se restauró en Microsoft Office para Mac 2011. Microsoft dijo que no tiene planes de eliminar VBA de la versión de Office para Windows.
Con Office 2010, Microsoft introdujo VBA7, que contiene un tipo de datos de puntero verdadero: LongPtr. Esto permite hacer referencia al espacio de direcciones de 64 bits. La instalación de 64 bits de Office 2010 no admite controles comunes de MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) o MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar), por lo que es heredado El código de 32 bits transferido a un código VBA de 64 bits que depende de estos controles comunes no funcionará. Esto no afecta a la versión de 32 bits de Office 2010. VBA7 no incluye una versión de 64 bits de los controles comunes, por lo que deja a los desarrolladores sin medios para migrar aplicaciones VBA a 64 bits. Microsoft sugiere ponerse en contacto con el proveedor de software para obtener versiones de 64 bits de los controles VBA.
![]() | Wikiversity tiene recursos de aprendizaje sobre Visual Basic para aplicaciones |
![]() | Wikilibros tiene más información sobre el tema: Visual Basic para aplicaciones |