Actualizar manualmente cada campo en un documento largo de Word, como las entradas de la tabla de contenido, las referencias cruzadas, los números de página y los índices, puede llevar minutos y es fácil de olvidar. Los comandos integrados de actualización de campos de Word solo funcionan en la selección actual o en todo el documento al imprimir o cerrar el archivo. Este artículo explica cómo escribir y ejecutar una macro de VBA sencilla que actualiza todos los campos del documento activo con un solo clic, lo que ahorra tiempo y evita referencias desactualizadas.
Puntos clave: Automatizar la actualización de campos con una macro de VBA
- Alt + F11: Abre el editor de VBA donde se pega el código de la macro
- Método Fields.Update: El único comando que actualiza todos los campos del documento
- Alt + F8: Abre el cuadro de diálogo Macro para ejecutar la macro personalizada
Qué hace una macro de VBA para actualizar campos y qué necesita antes de usarla
Una macro de VBA es un pequeño programa que automatiza tareas repetitivas dentro de Word. La macro para actualizar todos los campos utiliza el método Fields.Update, que recorre cada campo del documento activo y fuerza su recálculo. Esto incluye campos de la tabla de contenido, referencias cruzadas, números de página, índices, fórmulas y propiedades personalizadas del documento.
Antes de poder usar la macro, debe habilitar la pestaña Desarrollador en Word. Esta pestaña da acceso al editor de VBA y a las herramientas de macros. También debe guardar el documento en un formato que admita macros, ya sea con la extensión .docm (documento habilitado para macros) o .dotm (plantilla habilitada para macros). Los archivos .docx estándar no pueden almacenar código de VBA.
La macro funciona en todo el documento, incluidos encabezados, pies de página, notas al pie, notas al final y cuadros de texto. No requiere experiencia en programación porque solo necesita copiar, pegar y ejecutar el código que se proporciona en este artículo.
Habilitar la pestaña Desarrollador
Si la pestaña Desarrollador no está visible en la cinta de opciones, siga estos pasos:
- Abrir Opciones de Word
Haga clic en Archivo > Opciones. - Personalizar la cinta de opciones
En el cuadro de diálogo Opciones de Word, seleccione Personalizar cinta de opciones a la izquierda. - Marcar Desarrollador
En Fichas principales a la derecha, marque la casilla junto a Desarrollador. Haga clic en Aceptar.
Cómo escribir y ejecutar la macro de VBA para actualizar todos los campos
Siga estos pasos para insertar la macro en el documento y ejecutarla. Solo necesita hacerlo una vez por documento. Después, puede ejecutar la macro siempre que necesite actualizar todos los campos.
Paso 1: Abrir el editor de VBA
- Presione Alt + F11
Se abre la ventana del editor de VBA. Muestra el explorador de proyectos a la izquierda y un panel de código a la derecha. - Insertar un nuevo módulo
En la barra de menús, haga clic en Insertar > Módulo. Aparece un nuevo módulo bajo el proyecto Normal o bajo el proyecto del documento.
Paso 2: Pegar el código de la macro
- Copiar el código a continuación
Seleccione y copie el siguiente código de VBA:Sub UpdateAllFields() Dim fld As Field For Each fld In ActiveDocument.Fields fld.Update Next fld MsgBox "All fields have been updated.", vbInformation, "Field Update Complete" End Sub - Pegar en el módulo
Haga clic dentro del panel de código en blanco y presione Ctrl + V para pegar el código. - Cerrar el editor de VBA
Haga clic en la X de la esquina superior derecha de la ventana del editor de VBA para volver a Word.
Paso 3: Guardar el documento como habilitado para macros
- Haga clic en Archivo > Guardar como
Elija una ubicación e introduzca un nombre de archivo. - Seleccionar el formato correcto
En la lista desplegable Guardar como tipo, elija Documento de Word habilitado para macros (docm). Haga clic en Guardar.
Paso 4: Ejecutar la macro
- Presione Alt + F8
Se abre el cuadro de diálogo Macro, que enumera todas las macros disponibles. - Seleccionar UpdateAllFields
Haga clic en la macro llamada UpdateAllFields y luego en Ejecutar. Un cuadro de mensaje confirma que se han actualizado todos los campos.
Errores comunes y limitaciones al usar la macro de actualización de campos
Incluso una macro sencilla puede causar confusión si no se conoce su comportamiento y sus limitaciones. Los siguientes problemas son los más frecuentes entre los usuarios empresariales.
La macro no aparece en la lista de macros
Si no puede ver UpdateAllFields al presionar Alt + F8, la macro se pegó en la ubicación incorrecta. Abra de nuevo el editor de VBA (Alt + F11) y confirme que el código está dentro de un módulo bajo el proyecto Normal o bajo el proyecto del documento. Una macro colocada dentro de un evento de documento o de un módulo de clase no aparecerá en el cuadro de diálogo Macro. Haga clic con el botón derecho en el módulo del Explorador de proyectos y seleccione Quitar para eliminarlo; luego inserte de nuevo un módulo estándar y pegue el código otra vez.
El documento se guarda como .docx y la macro se pierde
Cuando cierra un archivo .docx que contiene una macro, Word elimina el código de VBA de forma silenciosa. Guarde siempre el archivo como .docm después de agregar la macro. Si guardó accidentalmente como .docx, vuelva a pegar el código de la macro y guarde de nuevo con el formato correcto. Para comprobar el formato actual, observe la extensión del archivo en el Explorador de archivos de Windows o haga clic en Archivo > Información y revise el tipo de archivo que aparece en Propiedades.
La macro actualiza los campos pero rompe los números de página de la tabla de contenido
La macro actualiza cada campo exactamente una vez. En una tabla de contenido (TOC), una sola actualización puede no recalcular los números de página si el propio campo TOC requiere dos pasadas. Para solucionarlo, ejecute la macro dos veces seguidas. Como alternativa, haga clic con el botón derecho en la TOC y seleccione Actualizar campo; luego elija Actualizar solo los números de página o Actualizar toda la tabla. Para actualizaciones automáticas de dos pasadas, modifique la macro para llamar a ActiveDocument.TablesOfContents(1).Update dentro de un bucle.
La macro se detiene o devuelve un error en documentos protegidos
Si el documento tiene restricciones de edición o está marcado como final, la macro no puede modificar los campos. Haga clic en Revisar > Restringir edición y detenga la protección. Si el documento está marcado como final, haga clic en la barra Marcado como final en la parte superior y seleccione Editar de todos modos. Después de quitar las restricciones, ejecute la macro de nuevo.
Documento habilitado para macros frente a documento estándar: comportamiento de actualización de campos
| Elemento | .docm (habilitado para macros) | .docx (estándar) |
|---|---|---|
| Almacenamiento de macros de VBA | Almacena macros dentro del archivo | No puede almacenar macros |
| Método de actualización de campos | Ejecutar una macro de VBA personalizada para actualizar todos los campos | Debe usar Ctrl + A y luego F9, o depender de la Vista previa de impresión |
| Advertencia de seguridad al abrir | Puede mostrar una advertencia de seguridad; el usuario debe habilitar las macros | Sin advertencia de macro |
| Uso compartido de archivos | Algunos servidores de correo bloquean los archivos adjuntos .docm | Ampliamente aceptado por los filtros de correo |
| Velocidad de actualización de campos por lotes | Una macro de un clic actualiza cientos de campos en segundos | La selección manual y F9 pueden tardar varios minutos en documentos grandes |
Ahora puede actualizar todos los campos de un documento de Word presionando Alt + F8 y seleccionando la macro UpdateAllFields. Guarde la macro en la plantilla Normal.dotm para que esté disponible en todos los documentos futuros. Para los documentos que requieren actualizaciones frecuentes de campos, considere asignar la macro a un atajo de teclado personalizado mediante Archivo > Opciones > Personalizar cinta de opciones > Atajos de teclado > Macros.