¿Qué es VBA? El Lenguaje de Macros de Excel
Si alguna vez ha utilizado macros en Excel, ha utilizado Visual Basic para Aplicaciones (VBA). VBA es un código de programación legible (y editable) que se genera cuando se graba una macro. Cuando ejecutas una macro, es este código el que lee Excel para reproducir tus acciones.
A continuación se presenta una serie de preguntas frecuentes sobre VBA, con respuestas tanto para los recién llegados a las macros de Excel como para los programadores experimentados.
¿Para Qué Se Utiliza VBA en Excel?
VBA se utiliza para escribir macros, que automatizan tareas simples y complejas en Excel.
Los usuarios de Microsoft Excel a menudo se encuentran repitiendo la misma serie de tareas una y otra vez. A veces se trata de tareas menores, como copiar y pegar subconjuntos de datos en diferentes hojas, y otras veces las tareas son más complejas, como cargar datos en un sitio web. Con VBA, se pueden programar macros para automatizar tareas como éstas, convirtiendo una serie de operaciones manuales en un solo clic de botón.
¿Cómo Empiezo con VBA en Excel?
La forma más fácil de empezar con las macros es grabarlas utilizando el grabador de macros integrado en Excel. El grabador de macros genera código VBA que puedes leer y editar, lo que te da un punto de partida para aprender a codificar tus propias macros desde cero.
Para más información, consulte el artículo «Cómo grabar una macro«.
¿Cómo Puedo Acceder al Código VBA?
El editor VBA puede abrirse en cualquier momento pulsando el atajo de teclado ALT+F11. Desde aquí, puedes acceder al código de todos los libros de trabajo abiertos.
Puede hacer doble clic en cualquier libro de trabajo, hoja u objeto de módulo en la ventana de Proyecto para mostrar el código VBA que contiene. Las macros grabadas siempre aparecerán en los módulos, que es donde normalmente querrá escribir también sus propias macros.
Para obtener más información sobre la edición de macros, consulte el artículo«Edición de macros VBA de Excel«.
¿Qué Puede Hacer VBA?
En primer lugar: si hay algo que se puede hacer en Excel, se puede escribir código VBA para hacer lo mismo. Si aprendes los comandos (usando el grabador de macros o recursos en línea), puedes encadenar varias acciones en una sola macro.
Segundo: puedes utilizar VBA para escribir funciones definidas por el usuario para utilizarlas en las fórmulas de las hojas de cálculo, como la función «=SUMA()», por ejemplo. Aunque Excel ya cuenta con una gran variedad de funciones, si quieres una función más específica para tu sector o lugar de trabajo, puedes añadirla con VBA.
Tercero: puedes utilizar VBA para añadir lógica (sentencias If) y bucles (acciones repetidas) a tus macros. Esto significa que una macro puede ser más que una grabación de acciones: puede ser un verdadero programa con repetición y toma de decisiones inteligentes.
Cuarto: VBA le permite crear interfaces de usuario, lo que ofrece a los usuarios una forma más fácil de interactuar con sus macros. Estas interfaces pueden ser simples botones en una hoja de cálculo, o complejos UserForms (Formularios) con ricos controles como TreeViews y FlexGrids.
(Véase el artículo «Añadir un botón y asignar una macro en Excel» como punto de partida)
Quinto, pero no último: VBA le permite aprovechar casi cualquier recurso de su ordenador o de Internet mediante el uso de bibliotecas DLL externas. Puedes automatizar mucho más que Excel de esta manera, como acceder a servicios web y bases de datos, analizar archivos XML, interoperar con otras aplicaciones de Microsoft Office y mucho, mucho más.
¿Son Iguales VB y VBA?
El lenguaje VBA es idéntico al de Visual Basic 6.0. Si tienes experiencia escribiendo código VB6, puedes escribir VBA.
El editor de VB en Excel es una versión reducida del editor de VB6, con capacidades de depuración similares y componentes como las ventanas «Proyecto» y «Propiedades». El editor de formularios también es muy similar, aunque tiene algunas limitaciones (como la imposibilidad de crear matrices de control).
Menos parecido a VBA es Visual Basic .NET. Aunque estos lenguajes comparten muchas de las mismas palabras clave y sintaxis, el código entre estos lenguajes es menos interoperable. No tendrías que reescribir mucho (o nada) para portar un procedimiento de VB6 a VBA, pero no podrías hacer lo mismo desde VB.NET.
¿Cuál es la Diferencia Entre una Macro y VBA?
VBA es sólo el lenguaje con el que se escriben las macros. Si tu macro es una historia, VBA es la gramática y el diccionario con los que se escribe.
¿Cuál es la Diferencia Entre una Macro y un Script?
Los scripts utilizan un subconjunto limitado del lenguaje de Visual Basic y se utilizan para diferentes propósitos.
Las macros se almacenan dentro de archivos de libros de Excel y sólo pueden ejecutarse desde Excel. Suelen utilizarse para automatizar varias funciones de Excel y añadir funcionalidad adicional a los libros.
Los scripts se almacenan en archivos de texto con la extensión .VBS y pueden ejecutarse desde Windows o desde otros programas. Los administradores de sistemas utilizarán los scripts para automatizar ciertas tareas administrativas en un ordenador o red.
¿Qué Hace un Desarrollador de VBA?
A menudo, las personas que crean macros no son desarrolladores, sino analistas, comerciantes, contables o científicos, que han recibido formación en programación y utilizan VBA más bien de forma puntual.
Las personas que se centran en el desarrollo de VBA tienden a crear herramientas más refinadas: crean complementos, interfaces de usuario con formularios, cuadros de mando interactivos, generadores de informes, etc.
¿Por Qué es Importante VBA?
VBA se incluye de serie en todas las aplicaciones de Microsoft Office, incluido Excel. Excel es uno de los programas más populares del mundo y se utiliza en una gran variedad de campos y lugares de trabajo, todos con sus propios flujos de trabajo y casos de uso.
Si no se utiliza la automatización, cada semana se pierden innumerables horas de trabajo realizando tareas aburridas y repetitivas a velocidad humana. La automatización con VBA puede realizar las mismas tareas a la velocidad del rayo del ordenador, lo que permite a los usuarios centrarse en los aspectos importantes de su trabajo, ser más productivos y, tal vez, salir de la oficina un poco antes
¿Es VBA un Buen Lenguaje de Programación?
VBA cuenta con los típicos elementos de programación, como variables, matrices, funciones, decisiones y bucles. Tiene una sintaxis fácil de leer y puede aprovechar mucha potencia de Windows y otros servicios.
El inconveniente es que la gestión de errores no es muy elegante en VBA. Mientras que otros lenguajes utilizan bloques de código «try-catch-finally», VBA utiliza declaraciones «On Error» para modificar el comportamiento de las macros cuando se produce un error.
Además, VBA no puede utilizarse para crear programas independientes, sitios web o servicios, y no puede interactuar con las nuevas API de programación como la plataforma .NET.
¿Es VBA Orientado a Objetos?
VBA tiene un soporte limitado para algunos conceptos orientados a objetos:
- Encapsulación: VBA admite la ocultación de datos mediante clases
- Polimorfismo: la palabra clave Implements permite a los programadores utilizar otras clases como interfaces
Sin embargo, en sentido estricto, VBA no es orientado a objetos. En particular, carece del concepto de herencia, lo que limita en gran medida la capacidad de ampliar la funcionalidad de los tipos existentes.