De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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. [1] 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). [2]

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 , [3] SolidWorks , [4] WordPerfect y UNICOM System Architect (que admite VBA 7.1).

Diseño [ editar ]

El código escrito en VBA se compila [5] 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 COM Structured Storage archivos (por ejemplo, .doco .xls) independientes de los flujos de documentos. Luego, el código intermedio es ejecutado [5] por una máquina virtual (alojada por la aplicación host). A pesar de su parecido con muchos dialectos BÁSICOS antiguos (particularmenteMicrosoft 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 la misma 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 .

Automatización [ editar ]

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 Dynamic Data Exchange (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. [6]

Problemas de seguridad [ editar ]

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.

Historial de versiones [ editar ]

  • VBA se lanzó por primera vez con MS Excel 5.0 en 1993. Se convirtió en un éxito instantáneo entre los desarrolladores para crear soluciones corporativas utilizando Excel. La inclusión de VBA con Microsoft Project, Access y Word reemplazando AccessBASIC y WordBASIC respectivamente lo hizo más popular.
  • VBA 4.0 es la próxima versión famosa con una versión totalmente mejorada en comparación con la anterior. Lanzado en 1996, está escrito en C ++ y se convirtió en un lenguaje orientado a objetos.
  • VBA 5.0 se lanzó en 1997 junto con todos los productos de MS Office 97. La única excepción para esto fue Outlook 97 que usaba VBScript .
  • VBA 6.0 y VBA 6.1 se lanzaron en 1999, especialmente con soporte para complementos COM en Office 2000. VBA 6.2 se lanzó junto con Office 2000 SR-1.
  • VBA 6.3 se lanzó después de Office XP, VBA 6.4 siguió a Office 2003 y VBA 6.5 se lanzó con Office 2007.
  • Office 2010 incluye VBA 7.0. No hay nuevas funciones en VBA 7 para desarrolladores en comparación con VBA 6.5, excepto por el soporte de 64 bits. Sin embargo, después de VBA 6.5 / Office 2007, Microsoft dejó de otorgar licencias de VBA para otras aplicaciones.
  • Office 2013, Office 2016 y Office 2019 incluyen VBA 7.1.
  • Reemplazo de la API de JavaScript: Microsoft se está alejando de VBA a favor de la API de JavaScript para Office (por lo tanto, también para Office en la web y Office para Mac). [ cita requerida ]

Desarrollo [ editar ]

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 , [7] 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 . [8] 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. [9] [10] [11] Una de sus características importantes fue que las interfaces de la tecnología estaban disponibles a través de Active Scripting ( VBScript yJScript ), lo que permite que incluso las aplicaciones que no conocen .NET se escriban a través de lenguajes .NET. Sin embargo, VSA quedó obsoleto en la versión 2.0 de .NET Framework, [11] sin dejar una ruta de actualización clara para las aplicaciones que deseen 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 de .NET).

Microsoft eliminó el soporte de VBA para Microsoft Office 2008 para Mac . [12] [13] 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. [14] [15]

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

Ver también [ editar ]

  • Visual Studio Tools para aplicaciones
  • Herramientas de Visual Studio para Office
  • Microsoft Visual Studio
  • Microsoft FrontPage
  • OpenOffice básico
  • LotusScript
  • Microsoft Power Fx

Referencias [ editar ]

  1. ^ "Compatibilidad entre las versiones de 32 bits y 64 bits de Office 2010" . msdn.microsoft.com .
  2. ^ "Encuesta de desarrolladores de desbordamiento de pila 2020" . Consultado el 28 de mayo de 2020 . VBA, Objective C y Perl ocupan los primeros lugares para los lenguajes más temidos, lenguajes que tenían un alto porcentaje de desarrolladores que los utilizan actualmente, pero que no tienen interés en seguir haciéndolo.
  3. ^ "Guía de VBA de Reflection Desktop" . docs.attachmate.com . Consultado el 1 de julio de 2017 .
  4. ^ "Ayuda de SolidWorks 2016 - VBA" . help.solidworks.com . Consultado el 25 de julio de 2016 .
  5. ^ a b "ACC: Visual / Access Basic es tanto un compilador como 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. ^ "Visual Studio para aplicaciones" . Archivado desde el original el 17 de diciembre de 2007.
  8. ^ "Presentación de Visual Studio para aplicaciones" . msdn.microsoft.com .
  9. ^ "Script sucede .NET" . msdn.microsoft.com .
  10. ^ "Microsoft quita las envolturas de la tecnología de desarrollo VSA" . Archivado desde el original el 17 de diciembre de 2007.
  11. ^ a b "Secuencias de comandos de VSA en .NET" . Archivado desde el original el 11 de febrero de 2007.
  12. ^ "WWDC: Microsoft actualiza el estado universal de las aplicaciones de Mac" . Macworld . 2006-08-07 . Consultado el 25 de mayo de 2007 .
  13. ^ "Qué es Microsoft Office y Office 365 - Preguntas frecuentes" .
  14. ^ "Los informes de la desaparición de VBA han sido muy exagerados" .
  15. ^ "Aclaración sobre el soporte de VBA" .
  16. ^ "Compatibilidad entre las versiones de 32 bits y 64 bits de Office 2010" . msdn.microsoft.com .