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 ya no recibe soporte ni actualización de Microsoft (excepto en el marco del soporte "It Just Works" de Microsoft, que es para toda la vida útil de las versiones de Windows compatibles, incluidas Windows 10 y Windows 11), la implementación de VBA en Office continúa actualizándose para admitir nuevas funciones de Office. [1] [2] VBA se utiliza para el desarrollo profesional y de usuario final debido a su facilidad de uso percibida, 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 los lenguajes de programación de macros específicos de la aplicación 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 de tiempo de ejecución de Visual Basic. Sin embargo, el código de VBA normalmente solo 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 la automatización OLE . 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 sensores sondeados. VBA puede usar, pero no crear, DLL de ActiveX/COM , y las versiones posteriores agregan compatibilidad con módulos de clase.

VBA está integrado en la mayoría de las aplicaciones de Microsoft Office , incluyendo Office para Mac OS X (excepto la versión 2008), y otras aplicaciones de Microsoft, incluyendo Microsoft MapPoint y Microsoft Visio . VBA también está implementado, al menos parcialmente, en aplicaciones publicadas por compañías distintas de Microsoft, incluyendo ArcGIS , AutoCAD , Collabora Online , CorelDraw , Kingsoft Office , LibreOffice , [3] SolidWorks , [4] WordPerfect y UNICOM System Architect (que soporta VBA 7.1).

Diseño

El código escrito en VBA se compila [5] a Microsoft P-Code (pseudocódigo), un lenguaje intermedio propietario , que las aplicaciones host ( Access , Excel , Word , Outlook y PowerPoint ) almacenan como un flujo separado en archivos COM Structured Storage (por ejemplo, .doco .xls) independientes de los flujos de documentos. Luego, el código intermedio se ejecuta [5] mediante una máquina virtual (alojada por la aplicación host). 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 .

Automatización

La interacción con la aplicación 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 el interior del entorno de desarrollo VBA mediante su explorador de objetos.

Los programas de Visual Basic para Aplicaciones que se escriben 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 aloja el entorno de ejecución de Visual Basic, porque las interfaces de automatización OLE serán diferentes. Por ejemplo, un programa de VBA escrito para automatizar Microsoft Word no se puede utilizar con un procesador de textos diferente, incluso si ese procesador de textos aloja VBA.

Por el contrario, se pueden automatizar varias aplicaciones desde un único host mediante la creación de objetos de aplicación dentro del código VBA. Las referencias a las diferentes bibliotecas se deben crear dentro del cliente VBA antes de que cualquiera de los métodos, objetos, etc. estén disponibles 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 se deben realizar explícitamente a través de estos objetos de aplicación para que funcionen correctamente.

Por 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 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 lenguaje proporciona una interfaz de usuario en forma de UserForms, que puede alojar 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 datos financieros o científicos dinámicos o en tiempo real. [6]

Preocupaciones de seguridad

Al igual que 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. Las opciones de la aplicación host de VBA son accesibles para el usuario. El usuario que ejecuta cualquier documento que contenga macros de VBA puede preconfigurar el software con las preferencias del usuario. Los usuarios finales pueden protegerse de los ataques deshabilitando la ejecución de macros en una aplicación o concediendo permiso para que un documento ejecute código VBA solo si están seguros de que la fuente del documento es confiable.

En febrero de 2022, Microsoft anunció su plan de 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. [7]

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 , [8] cuyas versiones 1.0 y 1.1 incluían una tecnología de ejecución de scripts llamada Script for the .NET Framework . [9] Visual Studio .NET 2002 y 2003 SDK contenía un IDE de scripts independiente llamado Visual Studio for Applications (VSA) que admitía VB.NET. [10] [11] [12] Una de sus características significativas era que las interfaces con la tecnología estaban disponibles a través de Active Scripting ( VBScript y JScript ), lo que permitía que incluso las aplicaciones que no eran compatibles con .NET se pudieran crear mediante lenguajes .NET. Sin embargo, VSA quedó obsoleto en la versión 2.0 de .NET Framework, [12] 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 . [13] [14] VBA fue restaurado en Microsoft Office para Mac 2011. Microsoft dijo que no tiene planes de eliminar VBA de la versión Windows de Office. [15] [16]

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 el código heredado de 32 bits portado al 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. [17] Microsoft finalmente lanzó una versión de 64 bits de MSComCtl con la actualización del 27 de julio de 2017 a Office 2016. [18]

Véase también

Referencias

  1. ^ "Compatibilidad entre las versiones de 32 bits 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}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  3. ^ "Compatibilidad con macros de VBA". The Document Foundation - LibreOffice . Consultado el 3 de enero de 2023 .
  4. ^ "Ayuda de SolidWorks 2016: VBA". help.solidworks.com . Consultado el 25 de julio de 2016 .
  5. ^ 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.
  6. ^ "Cómo configurar y utilizar la función RTD en Excel". msdn.microsoft.com .
  7. ^ "Microsoft bloqueará las macros de Office VBA de forma predeterminada". The Verge . Consultado el 26 de septiembre de 2022 .
  8. ^ "Visual Studio para aplicaciones". Archivado desde el original el 17 de diciembre de 2007.
  9. ^ "Introducción a Visual Studio para aplicaciones". msdn.microsoft.com .
  10. ^ "El script sucede en .NET". msdn.microsoft.com .
  11. ^ "Microsoft presenta la tecnología de desarrollo VSA". Archivado desde el original el 17 de diciembre de 2007.
  12. ^ ab "Scripting VSA en .NET". Archivado desde el original el 11 de febrero de 2007.
  13. ^ "WWDC: Microsoft actualiza el estado universal de las aplicaciones de Mac". Macworld . 2006-08-07 . Consultado el 2007-05-25 .
  14. ^ "¿Qué es Microsoft Office y Office 365? Preguntas frecuentes".
  15. ^ "Los informes sobre la desaparición de VBA han sido muy exagerados".
  16. ^ "Aclaración sobre la compatibilidad con VBA". Archivado desde el original el 11 de abril de 2008.
  17. ^ "Compatibilidad entre las versiones de 32 bits y 64 bits de Office 2010". msdn.microsoft.com .
  18. ^ "Notas de la versión de los lanzamientos del canal mensual en 2017". learn.microsoft.com . Consultado el 13 de noviembre de 2022 .