Si escribe macros en Word, es probable que haya encontrado código que no se ejecuta correctamente. El editor de VBA en Word incluye herramientas para recorrer el código paso a paso, inspeccionar variables y encontrar errores de lógica. Este artículo explica cómo usar el depurador integrado en el Editor de Visual Basic. Aprenderá a establecer puntos de interrupción, observar valores y manejar errores en tiempo de ejecución.
Puntos clave: Depurar macros VBA en Word
- Alt+F11: Abre el Editor de Visual Basic desde Word
- F9 en una línea de código: Activa o desactiva un punto de interrupción para pausar la ejecución en esa línea
- F8 (Paso a paso por instrucciones): Ejecuta una línea de código a la vez para una inspección detallada
- Ctrl+G (Ventana Inmediato): Ejecuta comandos VBA rápidos y comprueba los valores de las variables durante la depuración
- Depurar > Compilar VBAProject: Detecta errores de sintaxis y de compilación antes de ejecutar la macro
Cómo funciona el depurador de VBA en Word
El Editor de Visual Basic en Word es el mismo entorno que utilizan otras aplicaciones de Microsoft Office. Contiene un depurador integrado que puede pausar la ejecución de una macro, mostrar el contenido de las variables y permitirle ejecutar el código línea por línea. Para usar el depurador, primero debe abrir el editor de VBA presionando Alt+F11 mientras Word está activo. El editor tiene su propia barra de menús, barra de herramientas y varias ventanas: el Explorador de proyectos, la ventana Código, la ventana Inmediato y la ventana Locals.
Antes de depurar, asegúrese de que la configuración de seguridad de macros permita ejecutar código VBA. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros y seleccione Habilitar todas las macros. Esta configuración es solo para pruebas; desactívela después de depurar para evitar que se ejecute código malintencionado.
El depurador no corrige los errores automáticamente. Le muestra dónde se produce el error y qué valores tienen las variables en ese momento. Usted debe interpretar esa información para corregir el código.
Puntos de interrupción: pausar el código en una línea específica
Un punto de interrupción le indica al depurador que detenga la ejecución en una línea determinada. Para establecer un punto de interrupción, abra la macro en la ventana Código, haga clic en el margen gris a la izquierda de la línea donde desea pausar, o presione F9. Aparece un círculo rojo en el margen y la línea se resalta en rojo. Cuando ejecute la macro, la ejecución se detiene en el punto de interrupción antes de que se ejecute esa línea. Puede establecer varios puntos de interrupción en una misma macro.
La ventana Locals: observar variables
Cuando la ejecución está en pausa, la ventana Locals (Ver > Ventana Locals) muestra todas las variables del procedimiento actual. Enumera el nombre de la variable, su valor actual y su tipo. A medida que recorre el código paso a paso, los valores se actualizan automáticamente. Esta ventana es la forma más rápida de ver si una variable contiene los datos que espera.
La ventana Inmediato: ejecutar comandos al vuelo
La ventana Inmediato (Ctrl+G o Ver > Ventana Inmediato) es una línea de comandos dentro del editor de VBA. Mientras está en pausa, puede escribir una instrucción de VBA y presionar Entrar para ejecutarla. Por ejemplo, escriba ?Selection.Text para imprimir el texto seleccionado en Word. Use esta ventana para cambiar el valor de una variable o probar una función sin reiniciar la macro.
Pasos para depurar una macro VBA en Word
Siga estos pasos para depurar una macro que no produce el resultado esperado.
- Abra el Editor de Visual Basic
En Word, presione Alt+F11. Se abre el editor de VBA. Si su macro está en un módulo, haga doble clic en el nombre del módulo en el Explorador de proyectos para mostrar su código. - Establezca un punto de interrupción en la primera línea sospechosa
Desplácese hasta la línea donde sospecha que comienza el problema. Haga clic en el margen izquierdo o presione F9. Aparece un punto rojo. - Ejecute la macro
Presione F5 o haga clic en el botón Ejecutar de la barra de herramientas. La macro se ejecuta hasta que alcanza el punto de interrupción. En ese momento, la ventana del editor se activa y la línea del punto de interrupción se resalta en amarillo. - Recorra el código línea por línea
Presione F8 para ejecutar la línea resaltada actual. Cada pulsación ejecuta una línea y mueve el resaltado a la línea siguiente. Observe la ventana Locals para ver cómo cambian los valores de las variables después de cada paso. - Inspeccione los valores de las variables
Pase el mouse sobre el nombre de una variable en el código. Una información sobre herramientas muestra su valor actual. Como alternativa, escriba?variableNameen la ventana Inmediato y presione Entrar. - Cambie el valor de una variable si es necesario
En la ventana Inmediato, escribavariableName = newValuey presione Entrar. Esto sobrescribe el valor de la variable durante el resto de la sesión de depuración. - Continúe o detenga la depuración
Para reanudar la ejecución normal, presione F5. Para detener la depuración por completo, haga clic en el botón Restablecer de la barra de herramientas o presione Ctrl+Shift+F8.
Errores comunes y limitaciones en la depuración de VBA
El punto de interrupción no se vuelve rojo cuando presiono F9
Esto ocurre cuando la ventana de código no tiene el foco o cuando la línea es un comentario o una línea en blanco. Haga clic dentro de la ventana de código primero y luego presione F9. Los puntos de interrupción solo se pueden establecer en líneas ejecutables.
La macro se detiene pero la ventana Locals está vacía
La ventana Locals solo muestra las variables declaradas en el procedimiento actual. Si declaró variables a nivel de módulo, solo aparecen cuando la macro está en pausa dentro de un procedimiento que las usa. Abra la ventana Locals presionando Ctrl+Alt+V, L si no está visible.
Aparece un mensaje de error pero no puedo ver el número de línea
De forma predeterminada, VBA muestra un cuadro de diálogo con la descripción del error pero no el número de línea. Para ver la línea exacta, haga clic en Depurar en el cuadro de diálogo de error. El editor resalta la línea problemática en amarillo. Luego puede inspeccionar las variables y avanzar paso a paso.
Word se congela cuando ejecuto la macro con puntos de interrupción
Esto generalmente significa que la macro entró en un bucle infinito. Presione Ctrl+Interrumpir (o Ctrl+Pausa en algunos teclados) para interrumpir la ejecución. El editor se detendrá en la línea actual. Compruebe las condiciones del bucle y los contadores en la ventana Locals.
Un error de compilación impide que se ejecute la macro
Antes de depurar, compile siempre su código. Vaya a Depurar > Compilar VBAProject. Si existen errores, el editor resalta la primera línea problemática. Corrija la sintaxis, las referencias faltantes o las variables no declaradas, y luego compile de nuevo hasta que no aparezcan errores.
Herramientas de depuración de VBA en Word: puntos de interrupción vs instrucciones Stop vs Debug.Print
| Elemento | Punto de interrupción (F9) | Instrucción Stop | Debug.Print |
|---|---|---|---|
| Cómo establecerlo | Haga clic en el margen o presione F9 | Escriba Stop en el código |
Escriba Debug.Print variable en el código |
| Pausa la ejecución | Sí, en esa línea | Sí, en la línea Stop | No, la ejecución continúa |
| Muestra salida | Sin salida | Sin salida | Imprime en la ventana Inmediato |
| Se elimina automáticamente | No, debe eliminarse manualmente | No, debe eliminarse la línea | No, debe eliminarse la línea |
| Mejor uso | Pausar en una ubicación específica | Pausas condicionales dentro de bucles | Registrar valores sin detenerse |
Use puntos de interrupción para la mayoría de las sesiones de depuración. Use Stop cuando desee un punto de interrupción que se guarde con el archivo de código. Use Debug.Print para monitorear valores a lo largo de muchas iteraciones sin interrumpir el flujo de la macro.
Ahora puede abrir cualquier macro en Word, establecer puntos de interrupción, recorrer el código paso a paso e inspeccionar variables usando las ventanas Inmediato y Locals. Comience compilando su proyecto para detectar errores de sintaxis, luego coloque un punto de interrupción en la primera línea que podría causar problemas. Presione F8 para recorrer cada línea y observe cómo cambian sus variables. Para macros complejas, agregue instrucciones Debug.Print para registrar valores intermedios en la ventana Inmediato sin detener la ejecución.