Automatizar Excel con VBA y ChatGPT: de pedirle el código a integrar la API

Automatizar Excel con VBA y ChatGPT: de pedirle el código a integrar la API

Tres niveles de automatización con VBA, ordenados de menos a más, y los dos primeros no exigen saber programar.

1. Pedirle el código a ChatGPT (envío masivo de emails)

El caso clásico: una tabla de pedidos y hay que avisar por email de los que van con retraso. En vez de aprender VBA, se le describe el problema a ChatGPT —nombre de la tabla, columnas, condición y texto del mensaje— y se adapta lo que devuelve. Funciona con el modelo gratuito. Es el mejor momento para perderle el miedo a VBA: lees y ajustas en vez de escribir desde cero.

2. VBA por eventos: que la plantilla se comporte como una aplicación

Una plantilla de gestión de proyectos donde hacer clic en una celda filtra, sin desplegables. Se apoya en el evento de selección de celda y en Intersect, que comprueba si la celda pulsada cae dentro de un rango definido y lanza la acción que le toque: filtrar por ese proyecto, limpiar el filtro, mostrar el histórico de una fila.

3. Conectar Excel con la API de ChatGPT

El paso completo: VBA hace la llamada, Power Query interpreta la respuesta y extrae la parte útil, y los roles system, user y assistant se separan en celdas con nombre definido (gpt_system, gpt_prompt, gpt_response). El resultado es un chat funcionando dentro del libro, con el rol de sistema fijado por ti.

Los nombres definidos son la pieza que hace el código legible: VBA lee y escribe por nombre, así que mover celdas de sitio no rompe nada.

Automatizar Excel con VBA tiene fama de barrera, y desde que existen los modelos de lenguaje esa barrera es bastante más baja de lo que parece. Estos tres pasos van de menos a más, y solo el último exige entender el código que estás ejecutando.

Nivel 1: que ChatGPT escriba el VBA

El caso de partida es de los que aparecen en cualquier oficina: una tabla de pedidos con fecha, cliente, email y unidades, y la necesidad de avisar por correo de los que van con retraso.

La vía rápida no es aprender VBA, es describir el problema con precisión. En el prompt hay que dar cuatro cosas: el nombre de la tabla, sus columnas, la condición que dispara la acción y el texto del mensaje. Con eso, el modelo devuelve un procedimiento que recorre la tabla y llama a Outlook por cada fila que cumple.

Funciona con el modelo gratuito; no hace falta nada especial. Y es el mejor momento para perderle el miedo al editor de VBA, porque el trabajo pasa de escribir a leer y ajustar: cambiar el rango, el texto, añadir una condición. Revisarlo sigue siendo obligatorio —un bucle que manda correos es de las pocas cosas en Excel que no se deshacen con Ctrl+Z—, pero revisar es mucho más fácil que redactar.

Nivel 2: VBA por eventos, o cómo hacer que una plantilla parezca una aplicación

Aquí no hay ChatGPT, hay un cambio de mentalidad. Una plantilla de gestión de proyectos donde el usuario, en vez de abrir un desplegable y elegir, hace clic en una celda y la tabla se filtra.

La pieza es un evento: VBA puede ejecutar código cuando pasa algo, y uno de esos algos es que el usuario seleccione una celda distinta. Dentro del evento, la función Intersect comprueba si la celda que acaban de pulsar cae dentro de un rango que tú has definido como "zona activa":

If Not Intersect(Target, Range("AB7")) Is Nothing Then
    Range("D4").ClearContents
End If

Traducido: si el usuario pincha en AB7 —la casilla que dice "ver todos los proyectos"— vacía la celda que hace de filtro, con el mismo efecto que si la hubiera borrado a mano.

Repitiendo ese patrón se construyen las acciones: filtrar por un proyecto, filtrar por responsable, filtrar por estado, quitar cada filtro, y mostrar el histórico de la fila seleccionada mientras no se esté pulsando una casilla de acción.

La mecánica es tan simple como "si se pulsa aquí, haz esto", y sin embargo cambia por completo la sensación de uso: desaparecen los desplegables y el fichero empieza a comportarse como una herramienta.

Nivel 3: conectar Excel con la API de ChatGPT

El paso completo, y el único que necesita entender lo que se está montando. Tiene tres partes:

  1. VBA hace la llamada a la API con el texto del prompt.
  2. Power Query interpreta la respuesta, que llega en JSON, y extrae solo la parte útil. La consulta se actualiza automáticamente al terminar la llamada.
  3. Los roles se separan en celdas, y aquí está lo que diferencia esto de la web.

La API distingue tres roles: system, user y assistant. El de sistema es el que fija el comportamiento del modelo de forma persistente, y en la interfaz web no lo controlas. Al montarlo en Excel, ese rol vive en su propia celda, así que puedes dejar escrito de forma fija algo como "eres un analista financiero y respondes solo con fórmulas de Excel en español" y a partir de ahí escribir prompts cortos.

La pieza que mantiene el código legible son los nombres definidos: en vez de referirse a B4 o D12, la plantilla nombra las celdas gpt_system, gpt_prompt y gpt_response, y el VBA lee y escribe por nombre. Mover las celdas de sitio deja de romper nada, que es justo lo que suele arruinar las macros escritas contra coordenadas.

Piezas clave

  • El prompt como especificación — nombre de tabla, columnas, condición y texto; cuanto más concreto, menos hay que corregir
  • Evento de selección + Intersect — convierte celdas en botones sin insertar un solo control
  • Nombres definidos — hacen que el VBA no dependa de coordenadas
  • Power Query sobre la respuesta de la API — evita destripar el JSON a mano en VBA
  • El rol system — el control que la web no te da y que en Excel sí puedes fijar

Conclusión

Los tres niveles resuelven cosas distintas y ninguno hace inútil al anterior. Pedirle el código a ChatGPT sirve para tareas puntuales que no vas a repetir; los eventos sirven para que un fichero que usa otra gente se maneje solo; y la integración por API sirve cuando lo que quieres automatizar no es una acción, sino un criterio. Recuerda guardar el libro como .xlsm o la macro no sobrevivirá al cierre.

Más casos con estas funciones

Más contenido de Excel en InflueXcel