Antes de pedir una Macro de Excel a Claude o ChatGPT, mira esto

¿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 EXPERT

El 90% pide mal las Macros de Excel a ChatGPT y Claude

Antes de pedir una Macro de Excel a Claude o ChatGPT, mira esto

🎁 Descarga el archivo de ejemplo

Escribe tu correo electrónico para recibir gratis el archivo para practicar.


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):

  1. Describe exactamente la tarea. Qué quieres que recorra, que renombre, que mueva.
  2. Indica qué errores debe manejar. Tú debes saber qué situaciones puede enfrentar tu macro y decírselo a la IA.
  3. 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 con End 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

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top