Modify Word Document Multilevel list to include all depth

时间:2018-06-04 17:36:34

标签: vba ms-word word-vba

I have a word document that has a 4 level deep multilevel list. I would like to modify the list styles (temporarily) to show the entire depth of the numbers. For instance, rather than just showing (iii), I want to modify it to show 1.1(a)(iii). I have seen instructions of attaching the style to the list, but I'm not sure how to write the style to show what I want.

So, all of the searching and the replies have not resulted in a working solution, yet, but I did discover that the .docx file is a zipped collection of xml files. So, after looking inside the docx file and the numbering.xml sub-file, I found the following section that seems to define the style for the numbering I am looking to change:

<w:abstractNum w:abstractNumId="93" w15:restartNumberingAfterBreak="0">
<w:nsid w:val="5FE75E67"/>
<w:multiLevelType w:val="multilevel"/>
<w:tmpl w:val="9C366D9C"/>
<w:lvl w:ilvl="0">
    <w:start w:val="1"/>
    <w:numFmt w:val="decimal"/>
    <w:pStyle w:val="ArticleCL1"/>
    <w:lvlText w:val="%1"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="720"/>
        </w:tabs>
        <w:ind w:left="0" w:firstLine="0"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
        <w:b/>
        <w:i w:val="0"/>
        <w:caps/>
        <w:smallCaps w:val="0"/>
        <w:sz w:val="22"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="1">
    <w:start w:val="1"/>
    <w:numFmt w:val="decimal"/>
    <w:pStyle w:val="ArticleCL2"/>
    <w:lvlText w:val="%1.%2"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="720"/>
        </w:tabs>
        <w:ind w:left="720" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="22"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="2">
    <w:start w:val="1"/>
    <w:numFmt w:val="lowerLetter"/>
    <w:pStyle w:val="ArticleCL3"/>
    <w:lvlText w:val="(%3)"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="720"/>
        </w:tabs>
        <w:ind w:left="720" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="22"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="3">
    <w:start w:val="1"/>
    <w:numFmt w:val="lowerRoman"/>
    <w:pStyle w:val="ArticleCL4"/>
    <w:lvlText w:val="(%4)"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="1440"/>
        </w:tabs>
        <w:ind w:left="1440" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="22"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="4">
    <w:start w:val="1"/>
    <w:numFmt w:val="lowerLetter"/>
    <w:pStyle w:val="ArticleCL5"/>
    <w:lvlText w:val="%5."/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="2160"/>
        </w:tabs>
        <w:ind w:left="2160" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="24"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="5">
    <w:start w:val="1"/>
    <w:numFmt w:val="decimal"/>
    <w:pStyle w:val="ArticleCL6"/>
    <w:lvlText w:val="%6."/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="2160"/>
        </w:tabs>
        <w:ind w:left="2160" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Times New Roman" w:hint="default"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="22"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="6">
    <w:start w:val="1"/>
    <w:numFmt w:val="bullet"/>
    <w:lvlRestart w:val="0"/>
    <w:pStyle w:val="ArticleCL7"/>
    <w:lvlText w:val="·"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="1440"/>
        </w:tabs>
        <w:ind w:left="1440" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="24"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="7">
    <w:start w:val="1"/>
    <w:numFmt w:val="bullet"/>
    <w:lvlRestart w:val="0"/>
    <w:pStyle w:val="ArticleCL8"/>
    <w:lvlText w:val="·"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="2160"/>
        </w:tabs>
        <w:ind w:left="2160" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:sz w:val="24"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>
<w:lvl w:ilvl="8">
    <w:start w:val="1"/>
    <w:numFmt w:val="bullet"/>
    <w:pStyle w:val="ArticleCL9"/>
    <w:lvlText w:val="·"/>
    <w:lvlJc w:val="left"/>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="num" w:pos="2880"/>
        </w:tabs>
        <w:ind w:left="2880" w:hanging="720"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
        <w:b w:val="0"/>
        <w:i w:val="0"/>
        <w:caps w:val="0"/>
        <w:color w:val="auto"/>
        <w:sz w:val="24"/>
        <w:u w:val="none"/>
    </w:rPr>
</w:lvl>

Hopefully, this means that I can change the w:lvlText w:val="(%3) for w:ilvl="2" using VBA. Still investigating.

Thanks! Rod

2 个答案:

答案 0 :(得分:0)

据推测,基于以下内容:

Sub ApplyMultiLevelStyleNumbers()
Dim LT As ListTemplate, i As Long
Set LT = ActiveDocument.ListTemplates.Add(OutlineNumbered:=True)
For i = 1 To 4
  With LT.ListLevels(i)
    .NumberFormat = Choose(i, "%1", "%1.%2", "%1.%2.%3", "%1.%2.%3.%4")
    .Font.Bold = True
    .ResetOnHigher = True
    .StartAt = 1
    .LinkedStyle = "ArticleC_L" & i
  End With
Next
End Sub

以上假设您的四种样式名为ArticleC_L1 - ArticleC_L4。

答案 1 :(得分:0)

嗯,事实证明,如果你知道如何引用它,你可以在任何级别直接修改multiLevelList样式。使用我引用的xml文件,我发现第三级样式ArticleC_L3将其数字格式设置为“(%3)”,这是我想要更改的内容。它是在AbstractNumId =“93”的摘要中。以下代码更改了该设置:

wDoc.ListTemplates(94).ListLevels(3).NumberFormat = "%1.%2.%3"

您会注意到ListTemplates数字高一个,ListLevels ID同样高一个。在任何一种情况下,为了找到您需要参考的确切位置,我发现的最佳工作流程是:
 1.在单词doc中,单击您要更改的级别的数字/项目符号  2.单击样式框中的小下拉箭头,以便您可以看到该级别的样式名称  3.查看numbering.xml以查看使用该样式名称的数字样式。对我而言,行<w:pStyle w:val="ArticleCL3"/>为  4.按照xml树查找这是什么级别的编号样式。对我而言,行<w:lvl w:ilvl="2">为  5.继续关注xml树,找出关卡所在的模板编号。对我而言,读取的行<w:abstractNum w:abstractNumId="93" w15:restartNumberingAfterBreak="0">
 6.现在,您可以参考我在开始时共享的行中的确切级别格式。

感谢eveyone的帮助!