¿Te ha pasado que le pides una macro a una IA, la pegas en tu archivo y algo sale mal? No es que la IA esté fallando, es que probablemente te faltó preparación. En este tutorial te voy a enseñar los tres pasos para sobrevivir a pedirle macros a una IA: cómo prepararte antes de pedirla, cómo pedirla correctamente y, lo más importante, cómo implementarla para que funcione bien en tu archivo. Porque pedir es solo una parte, también hay que saber implementar lo que la IA te devuelve.
🎓 Certificación oficial Microsoft
¿Ya dominas Excel, pero falta un documento que lo certifique? Como centro autorizado Certiport, te preparamos para que apruebes el Examen Oficial MO-211.
CONOCE LA CERTIFICACIÓN EXCEL EXPERTEl 90% pide mal las Macros de Excel a ChatGPT y Claude
🎁 Descarga el archivo de ejemplo
Escribe tu correo electrónico para recibir gratis el archivo para practicar.
*Al enviar mi correo electrónico, acepto recibir noticias y ofertas. Puedo darme de baja en cualquier momento.
Paso 1: Prepara el terreno en Excel
Antes de pedirle nada a la IA, tu Excel tiene que estar listo.
Activa la pestaña Programador. Ficha Archivo, Opciones, Personalizar cinta de opciones, activas Programador y Aceptar. Desde ahí entras al entorno de Visual Basic, ves tus macros, grabas macros y revisas el tema de seguridad.
Guarda tu archivo como libro habilitado para macros. No todos los tipos de archivo de Excel guardan macros. El .xlsx normal guarda fórmulas, tablas dinámicas, Power Query, Power Pivot… todo, menos macros. Para eso necesitas Guardar como y elegir Libro de Excel habilitado para macros.
Revisa tu nivel de seguridad de macros. En Programador, Seguridad de macros, tienes cuatro opciones. Te recomiendo la segunda: deshabilitar macros con notificación, para que Excel te avise y tú decidas si las habilitas. La última opción, habilitar todas las macros sin aviso, no te la recomiendo.
Paso 2: Pídele la macro correctamente a la IA
Ojo con esto, porque aquí es donde la mayoría falla. Cuando le pidas una macro a la IA (Claude, GPT, Gemini o Copilot, esto aplica para todas):
- Describe exactamente la tarea. Qué quieres que recorra, que renombre, que mueva.
- Indica qué errores debe manejar. Tú debes saber qué situaciones puede enfrentar tu macro y decírselo a la IA.
- Pídele que comente cada bloque de código. Con esto entiendes qué hace cada parte y de paso aprendes más de macros.
Así se ve un prompt bien armado:
“Necesito una macro para Excel VBA. Mi archivo normalmente contiene doce hojas y quiero renombrarlas automáticamente con los nombres de los meses, de enero a diciembre. La macro debe recorrer las hojas mediante un ciclo y considerar estos casos: si el libro tiene exactamente doce hojas, renombra las doce. Si tiene menos, muestra un mensaje indicando cuántas hojas existen y pregunta si desea continuar; si responde que sí, renombra solo las disponibles, si responde que no, cancela sin hacer cambios. Si tiene más de doce, renombra automáticamente las primeras doce y deja las demás sin cambios. Comenta cada bloque de código.”
Fíjate que le doy contexto (qué quiero y por qué) y luego instrucciones puntuales. Esa combinación es la que hace la diferencia.
Paso 3: Implementa la macro correctamente
Aquí es donde la mayoría se queda a medias. Te vas a Programador, Visual Basic, y ahí tienes el entorno con tus proyectos. Cada archivo es un proyecto y tiene elementos: las hojas, ThisWorkbook, formularios y módulos.
¿Dónde pegas el código que te dio la IA? En un módulo. Clic derecho sobre el proyecto, Insertar, Módulo, y ahí pegas el código.
Rápido sobre la estructura de una macro, para que la entiendas cuando la IA te la entregue:
- Empieza con
Sub NombreDeLaMacro()y termina conEnd Sub. - Las variables se declaran con
Dim, seguido del nombre y el tipo (texto, número, fecha, objeto). - Los ciclos, como
For... Next, repiten una acción n cantidad de veces. En nuestro ejemplo, recorre las hojas para renombrarlas.
Cómo ejecutar la macro: puedes presionar F5 estando dentro de ella, usar el botón Ejecutar Sub, asignarla a un botón o forma en tu hoja, o llamarla desde Vista > Macros o Programador > Macros.
El error que casi seguro te va a pasar (y por qué)
Cuando probé esta macro con más de doce hojas, me marcó un error: “Este nombre ya está ocupado, prueba con uno distinto.” Este es un error de Visual Basic que la macro no controló, porque el ciclo intentó ponerle un nombre a una hoja que ya tenía ese nombre asignado.
Este tipo de errores no deberían llegarle a quien use tu macro, y menos debería tener que ver el código para entenderlo. Por eso le agregué un manejador de errores:
vba
On Error GoTo ManejadorErrores
' ... código de la macro ...
Exit Sub
ManejadorErrores:
MsgBox "Ha ocurrido un error: " & Err.Description, vbCritical
End Sub
Con esto, en lugar de un error críptico de VBA, el usuario ve un mensaje que tú controlas. Esto lo puedes hacer más completo: validar protección de hoja, validar protección de archivo, validar si el nombre ya existe. Todo lo que se te ocurra se puede controlar.
Aquí el código completo de este ejemplo:
vba
Sub RenombrarHojasConMeses()
' Declaración de variables
Dim meses(1 To 12) As String
Dim totalHojas As Integer
Dim i As Integer
Dim respuesta As VbMsgBoxResult
' Array con los nombres de los meses en el orden requerido
meses(1) = "Enero"
meses(2) = "Febrero"
meses(3) = "Marzo"
meses(4) = "Abril"
meses(5) = "Mayo"
meses(6) = "Junio"
meses(7) = "Julio"
meses(8) = "Agosto"
meses(9) = "Septiembre"
meses(10) = "Octubre"
meses(11) = "Noviembre"
meses(12) = "Diciembre"
On Error GoTo ManejadorErrores
' Contamos cuántas hojas tiene el libro actual
totalHojas = ThisWorkbook.Sheets.Count
' CASO 1: El libro tiene exactamente 12 hojas
If totalHojas = 12 Then
For i = 1 To 12
ThisWorkbook.Sheets(i).Name = meses(i)
Next i
MsgBox "Se renombraron las 12 hojas correctamente.", vbInformation
' CASO 2: El libro tiene menos de 12 hojas
ElseIf totalHojas < 12 Then
respuesta = MsgBox("El libro tiene " & totalHojas & " hojas, no 12." & vbNewLine & _
"¿Deseas renombrar únicamente las " & totalHojas & " hojas disponibles?", _
vbYesNo + vbQuestion, "Confirmar renombrado")
If respuesta = vbYes Then
For i = 1 To totalHojas
ThisWorkbook.Sheets(i).Name = meses(i)
Next i
MsgBox "Se renombraron " & totalHojas & " hojas correctamente.", vbInformation
Else
MsgBox "Proceso cancelado. No se realizaron cambios.", vbExclamation
End If
' CASO 3: El libro tiene más de 12 hojas
Else
For i = 1 To 12
ThisWorkbook.Sheets(i).Name = meses(i)
Next i
MsgBox "El libro tenía " & totalHojas & " hojas." & vbNewLine & _
"Se renombraron las primeras 12 con los meses. Las demás no fueron modificadas.", vbInformation
End If
Exit Sub
ManejadorErrores:
MsgBox "Ha ocurrido un error: " & Err.Description, vbCritical
End Sub
No todo es macro
Las macros a mí me gustan mucho, pero no son para todo. Cuando quieres hacer varias cosas a la vez, unir pasos o algo que Excel no hace de fábrica, ahí las macros tienen sentido. Pero también existen Power Query, Power Pivot, tablas dinámicas y Power Automate (un digno reemplazo de las macros en muchos casos). Aprender cuándo usar cada herramienta es tan importante como saber programar.
Si quieres aprender macros, Power Query y Power Automate a fondo, con casos reales y acompañamiento, te espero en Deztaca.
🎓 Deztaca
Aprende Excel, Macros, Power BI y análisis de datos a fondo, con cursos desde todos los niveles, clases en vivo todas las semana, Certificado por curso y un Foro de comunidad para resolver todas tus dudas.
MIRA NUESTROS CURSOS