VBA를 사용하여 스타일 상속 재설정(Word 2013)

VBA를 사용하여 스타일 상속 재설정(Word 2013)

이 질문을 다시 한번 드리고 싶습니다 - 기본 스타일에서 설정을 상속하려면 스타일에서 설정을 제거하세요.- 제공되고 투표된 답변이 실제로 내가 원하는 작업을 수행하지 않기 때문입니다.

Word의 스타일은 해당 스타일의 기반이 되는 스타일에서 다양한 속성을 상속받을 수 있습니다. 그러나 새 스타일의 속성을 변경하면 상속이 중단됩니다. 즉, 기본 스타일에 대한 변경 사항이 하위 스타일에 전파되지 않습니다. 아마도 VBA 매크로를 통해 상속을 다시 설정하는 방법을 원합니다.

위에 링크된 이전 질문의 선호 답변 방법은 글꼴 이름을 기본 스타일의 이름과 동일하게 설정하는 데 성공했지만 상속 링크를 다시 설정하지는 않습니다. 상위 항목을 추가로 변경해도 하위 항목이 업데이트되지 않습니다.

상속 링크를 어떻게 다시 설정할 수 있나요?

많은 감사

답변1

모든 스타일 설정에 대해 시도하지는 않았지만 적어도 몇 가지 설정(지금까지 글꼴 크기 및 간격)에 대해서는 상위 스타일과 일치하도록 하위 스타일 설정을 변경하기만 하면 상속이 다시 설정됩니다.

답변2

핵심요약: 스타일의 XML 정의를 편집하세요.

값을 BaseStyle 값으로 설정하는 것은 일회성 수정입니다.~ 아니다상속을 회복하는 것. 값은 기본 스타일의 값으로 명시적으로 설정되지만 상속되지는 않습니다.

예: Char 스타일 C1은 para 스타일 List Number 2의 기본값을 기반으로 합니다. LN2는 Normal을 기반으로 합니다. 일반 글꼴은 Calibri 11pt black입니다. C1을 열면 글꼴과 크기가 비어 있는 것을 볼 수 있습니다. Arial 10으로 변경하면 이제 영원히 명시적인 값이 됩니다. 매크로를 실행하면 C1이 Calibri 11pt 검정색으로 다시 설정됩니다. 공백이 아닙니다(상속됨)! LN2 및 C1을 변경하면 LN2의 글꼴 및 크기가 아닌 Calibri 11pt 검정색을 유지합니다. 정말 슬프네요.

XML 관점에서 스타일으르렁녹색으로 설정 했습니다 w:color. 기본 스타일에는 11pt 텍스트가 있습니다.

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

메모가 w:sz정의되지 않았습니다.

8포인트로 수동 변경한 후 XML은 다음과 같이 나타납니다. <w:sz w:val="16"/>

위의 .BaseStyle 매크로를 사용한 후에는 XML에서 명시적으로 11pt로 설정됩니다. <w:sz w:val="22"/>

그건~ 아니다계승. 이는 기본 스타일의 값에 대한 명시적인 설정입니다.

<w:sz w:val="22"/>XML 복원 상속에서 수동으로 제거합니다 . 그리고 그것은 터무니없는 해결책이다.

UI에서 글꼴 크기는 11pts인 것을 볼 수 있습니다. 이는 기본 스타일과 동일한 값이며 BaseStyle 접근 방식을 사용하여 설정되었지만 수동으로 11로 설정한 것과 동일합니다. 여기에 이미지 설명을 입력하세요

기본 스타일을 변경해도 자산 제목을 사용하여 서식이 지정된 텍스트는 변경되지 않습니다. 상속은 없습니다. 단지 11포인트입니다.

docname.docx\word\styles.xml을 편집한 후(없이선형화!) 제거하면 <w:sz w:val="22"/>상속이 복원된 것을 볼 수 있습니다. 글꼴 크기 제어가 비어 있으며 이는 값이 상속되었음을 알려주는 Word의 방식입니다.

여기에 이미지 설명을 입력하세요

기본 스타일을 변경하면 자산 제목을 사용하여 서식이 지정된 텍스트가 변경됩니다. 상속이 있습니다. 부모가 11포인트이므로 11포인트입니다.

관련 정보