Utilice VBA para restablecer la herencia de estilos (Word 2013)

Utilice VBA para restablecer la herencia de estilos (Word 2013)

Me gustaría volver a abordar esta pregunta. Eliminar la configuración del estilo para heredar la configuración del estilo base- dado que la respuesta proporcionada y votada realmente no hace lo que quiero que haga.

Un estilo en Word puede heredar varias propiedades del estilo en el que se basó. Sin embargo, cambiar cualquier propiedad del nuevo estilo rompe la herencia, es decir, los cambios en el estilo base no se propagan al estilo secundario. Me gustaría encontrar una forma, probablemente a través de una macro VBA, de restablecer la herencia.

El método de la respuesta preferida de la pregunta anterior, vinculada arriba, logra configurar el nombre de la fuente para que sea el mismo que el del estilo base, pero no restablece el vínculo de herencia. Otros cambios en el padre no actualizan al niño.

¿Cómo puedo restablecer ese vínculo de herencia?

Muchas gracias

Respuesta1

No lo he probado con todas las configuraciones de estilo, pero al menos para algunas configuraciones (tamaño de fuente y espaciado hasta ahora), simplemente cambiar la configuración del estilo secundario para que coincida con el principal restablecerá la herencia.

Respuesta2

TL;DR: Edite la definición XML del estilo.

Establecer el valor en el valor BaseStyle es una solución única,noalgo que restaure la herencia. Los valores se establecen explícitamente en los valores del estilo base, PERO no para heredar.

Ejemplo: El estilo de carácter C1 se basa en los valores predeterminados del estilo de parámetro Número de lista 2. LN2 se basa en Normal. La fuente normal es Calibri 11 pt negra. Abra C1 y verá que la fuente y el tamaño están en blanco. Cambie a Arial 10 y ahora será para siempre un valor explícito. Ejecute la macro y C1 volverá a Calibri 11 pt negro, ¡no en blanco (heredado)! Cambie LN2 y C1 permanece en Calibri 11 pt negro, no la fuente ni el tamaño de LN2. Estoy triste.

Desde una perspectiva XML, estilogrrrse ha w:colorpuesto en verde. Su estilo base tiene texto de 11 pt.

<w:style w:type="character" w:customStyle="1" w:styleId="grrr">
    <w:name w:val="grrr"/>
    <w:basedOn w:val="DefaultParagraphFont"/>
    <w:uiPriority w:val="1"/>
    <w:qFormat/>
    <w:rsid w:val="009014C2"/>
    <w:rPr>
        <w:color w:val="00B050"/>
    </w:rPr>
</w:style>

La nota w:szno está definida.

Después de un cambio manual a 8 puntos, el XML aparece como tal: <w:sz w:val="16"/>

Después del uso de la macro .BaseStyle anterior, se establece explícitamente en 11 puntos en el XML: <w:sz w:val="22"/>

Eso esnoherencia. Esa es una configuración explícita del valor del estilo base.

Eliminación manual <w:sz w:val="22"/>de la herencia XML restaurada. Y esa es una solución ridícula.

En la interfaz de usuario, vemos que el tamaño de fuente es de 11 puntos. Es el mismo valor que el estilo base y se configuró utilizando el enfoque BaseStyle, pero es lo mismo que configurarlo manualmente en 11. ingrese la descripción de la imagen aquí

Cuando cambio el estilo base, el texto formateado con Título del recurso no cambia. No hay herencia: son solo 11 puntos.

Después de editar docname.docx\word\styles.xml (sin¡linealizando!) para eliminar <w:sz w:val="22"/>vemos que la herencia ha sido restaurada: el control de tamaño de fuente está vacío, que es la forma en que Word nos dice que el valor se hereda.

ingrese la descripción de la imagen aquí

Cuando cambio el estilo base, el texto formateado con el título del recurso cambia. Hay herencia: son 11 puntos porque su padre tiene 11 puntos.

información relacionada