Utilidades para el programador VBA/Excel

Estándar

Todo buen programador debe evitar perder el tiempo en actividades repetitivas que fácilmente podrían realizarse o automatizarse de forma fácil y práctica, suena contradictorio leer esto. ¿Un programador haciendo cosas repetitivas y redundantes? Si, los programadores somos humanos después de todo y a veces no nos damos cuenta de que no solo se trata de estar codificando líneas y líneas de código, más aun si ya sabemos lo que queremos implementar y como funciona dicha implementación.

Es aquí donde debemos echar mano de los módulos y módulos de clase, los primeros nos servirán para agrupar código y el segundo igual pero con la ventaja de poder crear objetos desde cero o personalizar los ya existentes. Empecemos por ver el uso de los módulos. Siempre hemos usado los módulos estándar, es así donde reside el código de nuestras macros, tanto el creado por la grabadora de macros o el codificado manualmente.

En mi caso personal, decidí crear un módulo que contuviera funciones y procedimientos de uso general que pudieran ahorrarme el tener que escribir las mismas líneas de código una y otra vez en cada proyecto y si me funcionan a mi le pueden a funcionar a cualquier otro programador.

Al módulo decidí llamarlo “Utilities” y dentro de él residen por el momento 5 funciones y un procedimiento los cuales como programador me simplifican el trabajo, las cuales son:

  • IsInternetConnected

Validar si se cuenta con conexión a internet

  • IsFormLoaded

Validar si un formulario se encuentra cargado en memoria

  • SendMail

Enviar correo por medio de Outlook

  • MonthsNames

Devuelve el nombre de los meses del año

  • DictionaryFromRange

Crear diccionario a partir de los datos de dos rangos

  • MatrizFromDictionary

Reemplaza el contenido de una matriz con el contenido de un diccionario

Para poder hacer uso de estas herramientas en cada uno de sus proyectos, bastara con importar el modulo “Utilities”. Les comparto el libro con los ejemplos de cada una de las funciones.

clsString – Clase en VBA/Excel para la gestión de cadenas de caracteres

Estándar

Un secreto importante de los programadores de éxito es que nunca pierden tiempo escribiendo el mismo código dos veces. Tienen pequeñas o incluso grandes partes de código que utilizan una y otra vez. Es por ello que desarrolle una clase que me brindara todas las funciones que utilizo en la mayor parte de mis desarrollos de software,  una clase para el manejo y gestión de cadenas en VBA/Excel. Esta nueva clase viene a sustituir a la que habia desarrollado previamente en este post.

Hace unas semanas decidí rediseñar nuevamente dicha clase a la cual nombre como clsString y que está totalmente inspirada en el en el objeto String que proporciona el lenguaje de programación Ruby. Continuar leyendo

Ampliando VBA – Creando nuevos objetos con módulos de clase

Estándar

Con la introducción de Visual Basic 4, Microsoft brindo a los programadores una nueva herramienta:  “Módulos de clase”, los cuales dan la habilidad al programador de crear y manipular sus propios objetos de clase.

Si se tiene experiencia en lenguajes orientados a objetos como C++, SmallTalk se estará familiarizado con los beneficios de esta metodología. Si no, espero que el ejemplo proporcionado para este tema los sorprenda con el poder que brindan los módulos de clase al programador.

Con los módulos de clase podemos implementar estructuras de datos tales como listas enlazadas o hacer abstracciones de las funciones de la API de Windows.

Como saben soy fan de Python y Ruby, entonces haciendo uso de los módulos de clase, porque no crear objetos como los que disponen estos lenguajes y tenerlos disponibles en VBA/Excel, los cuales ahorran gran cantidad de tiempo al programador para el procesamiento de datos.

Este no es un tutorial de cómo crear clases en VBA (hay muchos tutoriales y libros en la web) sino más bien pondré al alcance de los interesados algunos módulos que iré desarrollando para facilitar nuestra vida como programadores VBA/Excel, así mismo estoy abierto a comentarios y sugerencias para poder crear clases de la mejor forma, entre mas ideas, mejor…

Si alguien está interesado en profundizar en este, les recomiendo el siguiente libro, el cual es un excelente libro que no puede faltar en la biblioteca personal de todo programador de VBA/Excel, este es el link (lo único mal es que esta en ingles):

VBA Developer’s Handbook, Second Edition

Y aquí está mi nuevo objeto (clsStr) quiero emular un objeto de la clase String como los que proporciona Ruby o Python, les dejo el enlace:

clsStr

Nota: esta clase no está finalizada, sino que iré agregando nuevas propiedades y métodos al mismo.