stringtranslate.com

Visual Basic para Aplicaciones

Visual Basic para Aplicaciones ( VBA ) es una implementación del lenguaje de programación basado en eventos de Microsoft , Visual Basic 6.0, integrado en la mayoría de las aplicaciones de escritorio de Microsoft Office . Aunque se basa en Visual Basic anterior a .NET, que Microsoft ya no admite ni actualiza, la implementación de VBA en Office continúa actualizándose para admitir nuevas características de Office. [1] [2] VBA se utiliza para el desarrollo profesional y de usuario final debido a su aparente facilidad de uso, la amplia base de usuarios instalada de Office y su amplio legado en los negocios.

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 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 el trabajo con formularios de usuario o cuadros de diálogo personalizados.

Como sugiere su nombre, VBA está estrechamente relacionado con Visual Basic y utiliza la biblioteca en tiempo de ejecución de Visual Basic. Sin embargo, el código VBA normalmente sólo puede ejecutarse dentro de una aplicación host, en lugar de como un programa independiente . Sin embargo, VBA puede controlar una aplicación desde otra mediante OLE Automation . Por ejemplo, VBA puede crear automáticamente un informe de Microsoft Word a partir de 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, incluidas Microsoft MapPoint y Microsoft Visio . VBA también se implementa, al menos parcialmente, en aplicaciones publicadas por empresas distintas a Microsoft, incluidas ArcGIS , AutoCAD , Collabora Online , CorelDraw , Kingsoft Office , LibreOffice , [3] Reflection, [4] SolidWorks , [5] WordPerfect y UNICOM. System Architect (que admite VBA 7.1).

Diseño

El código escrito en VBA se compila [6] 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 el almacenamiento estructurado COM. archivos (por ejemplo, .doco .xls) independientes de los flujos de documentos. Luego, el código intermedio se ejecuta [6] mediante 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 el mismo. Biblioteca y máquina virtual. La compatibilidad finaliza 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 .

Automatización

La interacción con la aplicación host utiliza OLE Automation . Normalmente, la aplicación host proporciona una biblioteca de tipos y documentación de interfaz de programación de aplicaciones (API) que documentan cómo los programas VBA pueden interactuar con la aplicación. Esta documentación se puede examinar desde el entorno de desarrollo VBA utilizando su Explorador de objetos.

Los programas de Visual Basic para Aplicaciones escritos para utilizar la interfaz de automatización OLE de una aplicación no se pueden utilizar para automatizar una aplicación diferente, incluso si esa aplicación hospeda 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 utilizar con un procesador de texto diferente, incluso si ese procesador de texto aloja VBA.

Por el contrario, se pueden automatizar varias aplicaciones desde un host creando objetos de aplicación dentro del código VBA. Se deben crear referencias a las diferentes bibliotecas 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 vinculación temprana o tardía. Estos objetos de aplicación crean el vínculo 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.

A modo de 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 el resultado como tablas en un documento de Word o los envía como un correo electrónico de Outlook.

Los programas VBA se pueden adjuntar a un botón de menú, una macro , un método abreviado de teclado o un evento OLE/COM, como la apertura de un documento en la aplicación. El lenguaje proporciona una interfaz de usuario en forma de UserForms, que puede alojar controles ActiveX para mayor funcionalidad.

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. [7]

Preocupaciones de seguridad

Como ocurre con cualquier lenguaje de programación común, las macros de VBA se pueden crear con intenciones maliciosas. Al utilizar 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 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 de ataques desactivando la ejecución de macros en una aplicación o otorgando permiso a un documento para ejecutar código VBA sólo si están seguros de que se puede confiar en la fuente del documento.

En febrero de 2022, Microsoft anunció su plan para bloquear las macros VBA en archivos descargados de Internet de forma predeterminada en una variedad de aplicaciones de Office debido a su uso generalizado para propagar malware. [8]

Historial de versiones

Desarrollo

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 , [9] de los cuales las versiones 1.0 y 1.1 incluían una tecnología de ejecución de secuencias de comandos denominada Script para .NET Framework . [10] Visual Studio .NET 2002 y 2003 SDK contenían un IDE de secuencias de comandos independiente llamado Visual Studio para Aplicaciones (VSA) que admitía VB.NET. [11] [12] [13] Una de sus características importantes fue que las interfaces de la tecnología estaban disponibles a través de Active Scripting ( VBScript y JScript ), permitiendo que incluso las aplicaciones que no utilizan .NET se puedan escribir a través de lenguajes .NET. Sin embargo, VSA quedó obsoleto en la versión 2.0 de .NET Framework, [13] sin dejar 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 pueden ser compilado y ejecutado en tiempo de ejecución a través de bibliotecas instaladas como parte del tiempo de ejecución estándar .NET).

Microsoft abandonó el soporte de VBA para Microsoft Office 2008 para Mac . [14] [15] 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. [16] [17]

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 trasladado a código VBA de 64 bits que depende de estos controles comunes no funcionará. Esto no afectó a la versión de 32 bits de Office 2010. [18] Microsoft finalmente lanzó una versión de 64 bits de MSComCtl con la actualización del 27 de julio de 2017 a Office 2016. [19]

Ver también

Referencias

  1. ^ "Compatibilidad entre las versiones de 32 y 64 bits de Office 2010". msdn.microsoft.com .
  2. ^ o365devx. "Novedades de VBA en Office 2019". docs.microsoft.com . Consultado el 2 de mayo de 2022 .{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  3. ^ "Soporte para macros VBA". La Fundación Documento - LibreOffice . Consultado el 3 de enero de 2023 .
  4. ^ "Guía de VBA de Reflection Desktop". docs.attachmate.com . Consultado el 1 de julio de 2017 .
  5. ^ "Ayuda de SolidWorks 2016: VBA". ayuda.solidworks.com . Consultado el 25 de julio de 2016 .
  6. ^ ab "ACC: Visual/Access Basic es a la vez un compilador y un intérprete". Microsoft. 2012. Archivado desde el original el 21 de octubre de 2012.
  7. ^ "Cómo configurar y utilizar la función RTD en Excel". msdn.microsoft.com .
  8. ^ "Microsoft bloqueará las macros de Office VBA de forma predeterminada". El borde . Consultado el 26 de septiembre de 2022 .
  9. ^ "Visual Studio para aplicaciones". Archivado desde el original el 17 de diciembre de 2007.
  10. ^ "Presentación de Visual Studio para aplicaciones". msdn.microsoft.com .
  11. ^ "El guión sucede .NET". msdn.microsoft.com .
  12. ^ "Microsoft finaliza la tecnología de desarrollo VSA". Archivado desde el original el 17 de diciembre de 2007.
  13. ^ ab "Secuencias de comandos VSA en .NET". Archivado desde el original el 11 de febrero de 2007.
  14. ^ "WWDC: Microsoft actualiza el estado universal de las aplicaciones de Mac". Macmundo . 2006-08-07 . Consultado el 25 de mayo de 2007 .
  15. ^ "¿Qué es Microsoft Office y Office 365? Preguntas frecuentes".
  16. ^ "Los informes sobre la desaparición de VBA han sido muy exagerados".
  17. ^ "Aclaración sobre la compatibilidad con VBA". Archivado desde el original el 11 de abril de 2008.
  18. ^ "Compatibilidad entre las versiones de 32 y 64 bits de Office 2010". msdn.microsoft.com .
  19. ^ "Notas de la versión para los lanzamientos del canal mensual en 2017". aprender.microsoft.com . Consultado el 13 de noviembre de 2022 .