domingo, 29 de mayo de 2022

Excel e historia (III): El Visual Basic for Applications (VBA) de Excel

En 1993 Microsoft lanza la versión 5.0 de Excel (arquitectura BIFF5); probablemente el primer gran cambo que incluye dicha versión es que los archivos podían tener varias hojas (libros), pero definitivamente el mayor cambio y que probablemente fue el de mayor impacto en Excel hasta el día de hoy fue la aparición de Visual Basic for Application (VBA).

En los años noventa, personal de Microsoft manifestaba que una de las primeras ideas que tuvieron como logro la inclusión de VBA, fue la necesidad de unificar el código usado entre las aplicaciones de Office. Recordemos que en aquel entonces se usaban las Macros 4.0 en Excel, así como AccessBASIC y WordBASIC, para Access y Word respectivamente.

Siempre se ha dicho que, ante el éxito de Visual Basic (VB) en aquel entonces, se decidió mantener con VBA la analogía al lenguaje Basic en general, pero manteniendo ciertas características semejantes al VB.

Esta primera versión de VBA (1.0) que aparece en Excel se programa en módulos que también se veían como pestañas (hojas) del libro, aunque de forma predeterminada llevaban le nombre “Módulo”.

El código VBA se escribía en dicho módulo, muy parecido, por no decir casi igual, a como se hace hoy en día. Claro, con la diferencia que no era un entorno propio de programación.

Imagen tomada de internet

Con esta primera versión la Grabadora de Macros funciona para VBA, claro que con la particularidad que aún podía usarse para también grabar Macros 4.0.

Imagen tomada de internet

Esta versión también incluyo los Diálogos, conocidos hoy como los Diálogos de Excel 5.0, que eran formularios con objetos que podían usarse con VBA y de los que hablaré próximamente.

Al año siguiente (1994) Microsoft incluye VBA 1.0 en Project. En 1995 se lanza Excel 95 (7.0) que sigue incluyendo VBA (1.0) pero retiran la opción para grabar Macros 4.0. En Access también se incluye VBA, pero es una versión mejorada, la 2.0, reemplazando a AccessBasic, lo que es muy aceptado por los usuarios de dicho programa. Durante ese tiempo se siguen implementando cambios en VBA e incluso la que hubiese podido ser la versión 3.0 es incluida como elemento de VB 4.0 en 1996. Ese mismo año se termina la versión 4.0 de VBA, la que está elaborada en C ++ y convierte dicho lenguaje en uno orientado a objetos. Dicha versión se incluye en Word reemplazando a WordBasic.

El cambio radical de VBA llegó con su versión 5.0, la cual es incluida en todos los productos de Office que se lanzan con Office 97 (8.0), excepto en Outlook. Asimismo, se deja de lado la programación en hojas y VBA pasa a tener su propio editor del lenguaje (Editor de Visual Basic – VBE). Otro cambio radical es la inclusión de los Userform de VBA, dejando de lado, en la práctica, los Diálogos anteriores. Estas versiones de Excel y VBA aumentan considerablemente la cantidad de eventos de los objetos, se introducen los objetos ActiveX y la Ayuda del VBA es mejorada bastante.

Imagen tomada de internet

Con Excel 2000 (9.0) llega VBA 6.0 que, si bien no introdujo cambios drásticos, sí permitió que los Userform sean también no modales y adaptó secuencias para la manipulación de algunas otras herramientas de Excel como por ejemplo los Gráficos Dinámicos. Con las actualizaciones de dicho programa llegó VBA 6.1 y VBA 6.2 aparece con Office 2000 SR-1. Excel 2002 – XP (10.0) llegó también con VBA 6.2, con algunos mínimos cambios relacionados a la nueva interfaz de Office y algunas herramientas nuevas de Excel. VBA 6.3 llegó con las actualizaciones de Office para esta versión XP. Excel 2003 (11.0) llegó con VBA 6.4 y con sus actualizaciones llegó VBA 6.5. Por aquellos años Microsoft anuncia que no habría versiones nuevas de VBA.

Con la llegada de Excel 2007 (12.0) y su nuevo entorno tipo NET, dejando prácticamente de lado COM, se incluyó VBA 6.5, con lo que parecía Microsoft cumplía con ese comunicado años antes sobre que no habría nuevas versiones de VBA. Eso sí, Microsoft eliminó la compatibilidad con VBA para Excel 2008 para Mac, aunque por presión de los usuarios tuvo que restaurarlo Excel para Mac 2011. En paralelo Microsoft informó que no tenía planes de eliminar VBA de la versión de Windows de Office, aunque la campaña para usar Visual Studio Tools for Office (VSTO) parecía encaminada a que se deje de lado VBA.

Excel 2010 (14.0) incluyó VBA 7.0, a pesar del anuncio de Microsoft unos años antes, aunque no hay nuevas características en dicha versión a comparación de la versión anterior 6.5. Eso sí, incluye tipos de datos de puntero como LongPtr para adaptarse a la nueva arquitectura implementada por Microsoft en Office, ya que salen al mercado tanto Office de 32 bits como de 64 bits a partir de dicha versión 2010. He de comentar que el Excel de 64 bits hizo que se pierda compatibilidad con muchos objetos ActiveX de 32 bits que los usuarios se habían acostumbrado a usar como el DateTimePicker (DtPicker), por mencionar uno (aunque hay trucos para usar algunos para algunas versiones de Excel de 64 bits bajo Windows de 32 bits y cosas así, pero no es tema de hoy).

La última versión de VBA que existe es la 7.1 que se lanza junto a Excel 2013 (15.0) y que es la que se sigue incluyendo en todas las versiones posteriores de Excel (2016, 2019, 2021, 365 – 16.0). Dicha versión básicamente, similar a las anteriores, es para adaptarse a las nuevas herramientas usadas en Excel.

Para terminar, con la aparición de las herramientas BI nuevamente comienzan los rumores sobre la desaparición de VBA, lo que se incrementa los últimos años con la aparición de Office Scripts y TypeScript en Excel (aunque solo vienen con Office 365 Empresa y algunas ediciones de Educación – 3 y 5), así como la fuerte recomendación sobre el uso de complementos para Excel hechos con Python. A pesar de ello, yo creo que tenemos VBA para buen rato. Hasta la próxima.

Abraham Valencia
Lima, Perú

No hay comentarios.:

Publicar un comentario