Cómo limpiar cambios controlados huérfanos de un documento de Word mediante un script de VBA
🔍 WiseChecker

Cómo limpiar cambios controlados huérfanos de un documento de Word mediante un script de VBA

Cuando colabora en un documento de Word con varios revisores, los cambios controlados a veces pueden quedar huérfanos. Los cambios controlados huérfanos son revisiones que aparecen en el documento pero que ya no tienen un comentario visible ni una atribución de autor en el Panel de revisiones estándar. Esto suele ocurrir cuando se eliminan los comentarios pero permanecen las marcas de revisión subyacentes, o cuando se importan cambios de diferentes versiones del documento. No puede eliminar estas marcas huérfanas con los botones Aceptar o Rechazar de la pestaña Revisar porque Word no las reconoce como cambios activos. Este artículo explica cómo identificar cambios controlados huérfanos y eliminarlos mediante un script de VBA que fuerza a Word a borrar todos los datos de revisión residuales.

Puntos clave: Limpiar cambios controlados huérfanos con VBA

  • Método de macro de VBA: ActiveDocument.Revisions.AcceptAll y ActiveDocument.Revisions.RejectAll: Estos comandos fuerzan a Word a procesar todas las marcas de revisión, incluidas las entradas huérfanas que la interfaz de usuario ignora.
  • Comprobación de visibilidad del Panel de revisiones: Abra el Panel de revisiones para confirmar que existen cambios huérfanos antes de ejecutar el script.
  • Configuración de seguridad de macros Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros > Habilitar todas las macros: Debe permitir temporalmente que se ejecuten las macros para ejecutar el script.

ADVERTISEMENT

Por qué se producen los cambios controlados huérfanos y cómo los detecta VBA

Los cambios controlados huérfanos son marcas de revisión que permanecen en el XML del documento pero que no se muestran en la vista estándar de globos de Control de cambios. Se producen cuando se elimina el perfil de usuario de un revisor del sistema, cuando se eliminan los comentarios durante la conversión del documento o cuando se pegan cambios de otro documento que tenía activado el control de cambios. La interfaz gráfica de Word se basa en los metadatos del autor para agrupar y mostrar las revisiones. Cuando esos metadatos faltan o están dañados, los comandos Aceptar y Rechazar de la pestaña Revisar pueden omitir esas entradas huérfanas.

VBA proporciona acceso directo a la colección Revisions del documento. El objeto ActiveDocument.Revisions contiene todas las marcas de revisión independientemente de su estado de visualización. Al recorrer esta colección mediante programación, puede aceptar o rechazar todas las revisiones, incluidas las huérfanas que la interfaz de usuario ignora. El script no depende de los nombres de los autores ni de los datos de los comentarios. Procesa cada entrada de revisión en el almacenamiento subyacente del documento.

Qué se considera un cambio controlado huérfano

Un cambio controlado huérfano tiene una o más de estas características:

  • La revisión aparece en el documento como tachado o subrayado pero no se muestra en la barra vertical del Panel de revisiones.
  • La revisión no tiene nombre de autor ni fecha en la vista de detalles del Panel de revisiones.
  • La revisión no se puede seleccionar haciendo clic en ella en el cuerpo del documento.
  • El comando Aceptar todos los cambios de la pestaña Revisar no elimina el formato ni el cambio de texto.

Pasos para limpiar cambios controlados huérfanos con un script de VBA

Antes de ejecutar el script, guarde una copia del documento. La macro de VBA acepta o rechaza permanentemente todas las revisiones, incluidas las marcas huérfanas. No puede deshacer esta acción después de guardar y cerrar el archivo.

Paso 1: Habilitar las macros en Word

  1. Abrir Opciones de Word
    Haga clic en Archivo > Opciones > Centro de confianza. Haga clic en Configuración del Centro de confianza.
  2. Cambiar la configuración de macros
    Seleccione Configuración de macros. Elija Habilitar todas las macros. Haga clic en Aceptar dos veces para cerrar los cuadros de diálogo.

Paso 2: Abrir el Editor de VBA

  1. Presione Alt+F11
    Esto abre la ventana del editor de Visual Basic para Aplicaciones.
  2. Insertar un nuevo módulo
    En el editor, haga clic en Insertar > Módulo. Aparece una ventana de código en blanco.

Paso 3: Pegar el script de VBA

  1. Copiar el código de la macro
    Copie el siguiente script exactamente:
    Sub CleanOrphanRevisions()
        Dim rev As Revision
        Dim doc As Document
        Set doc = ActiveDocument
        
        ' Accept all revisions including orphans
        doc.Revisions.AcceptAll
        
        ' Reject any remaining revisions that could not be accepted
        doc.Revisions.RejectAll
        
        MsgBox "All tracked changes including orphan marks have been removed."
    End Sub
    
  2. Pegar en el módulo
    Haga clic dentro de la ventana del módulo y presione Ctrl+V para pegar el código.

Paso 4: Ejecutar la macro

  1. Ejecutar el script
    Presione F5 mientras el cursor está dentro del código de la macro. Como alternativa, haga clic en Ejecutar > Ejecutar Sub/UserForm.
  2. Confirmar la acción
    Word procesa todas las revisiones. Aparece un cuadro de mensaje cuando finaliza la macro. Haga clic en Aceptar.

Paso 5: Verificar el documento

  1. Comprobar el Panel de revisiones
    En la pestaña Revisar, haga clic en Panel de revisiones. El panel debe mostrar cero revisiones.
  2. Guardar el documento
    Presione Ctrl+S para guardar la versión limpia. Use un nuevo nombre de archivo para conservar la copia de seguridad original.

ADVERTISEMENT

Si el script de VBA no elimina todas las marcas huérfanas

En algunos casos, los comandos AcceptAll y RejectAll pueden omitir revisiones que están bloqueadas por la protección del documento o que existen en subdocumentos anidados. Las siguientes secciones abordan estos escenarios específicos.

El documento está protegido solo para cambios controlados

Si el documento se ha configurado para forzar el control de cambios, no puede aceptar ni rechazar revisiones mediante programación. Para quitar la protección:

  1. Abrir el panel Restringir edición
    Haga clic en Revisar > Restringir edición.
  2. Detener la protección
    Haga clic en Detener protección. Si se le solicita, introduzca la contraseña.
  3. Ejecutar la macro de nuevo
    Repita los pasos de la sección principal anterior.

Existen marcas huérfanas en un documento maestro con subdocumentos

La macro se ejecuta solo en el documento activo. Los subdocumentos son archivos independientes. Para limpiar todas las huérfanas:

  1. Expandir todos los subdocumentos
    En la pestaña Vista, haga clic en Esquema. En la pestaña Esquema, haga clic en Expandir subdocumentos.
  2. Ejecutar la macro en cada subdocumento
    Abra cada archivo de subdocumento individualmente y ejecute la macro.

Word muestra un error de compilación al ejecutar la macro

Un error de compilación generalmente significa que el proyecto de VBA está bloqueado por la configuración de seguridad o que el código contiene un error tipográfico. Verifique que las macros estén habilitadas según el Paso 1. Compruebe que el código se haya pegado exactamente como se muestra, sin caracteres adicionales. Si el error persiste, reinicie Word e inténtelo de nuevo.

Limpieza manual vs script de VBA: diferencias clave

Elemento Limpieza manual Limpieza con script de VBA
Método Pestaña Revisar > Aceptar todos los cambios ActiveDocument.Revisions.AcceptAll y RejectAll
Gestiona marcas huérfanas No Sí
Requiere habilitar macros No Sí
Se puede deshacer después de guardar No No
Funciona en documentos protegidos No No (primero debe quitar la protección)
Funciona en subdocumentos No No (debe ejecutarse por archivo)

Ahora puede eliminar cambios controlados huérfanos de cualquier documento de Word con el script de VBA proporcionado. Antes de ejecutar la macro en un archivo crítico, pruébela siempre en una copia. Para documentos que contengan una mezcla de revisiones legítimas y huérfanas, considere usar solo el comando AcceptAll y luego revisar manualmente las marcas restantes. Un consejo avanzado: modifique el script para recorrer cada revisión y registrar su autor y fecha en un archivo de texto antes de aceptar, lo que le proporcionará un registro de lo que se eliminó.

ADVERTISEMENT