我想知道如何插入动态多级列表编号 客户端请求将Word 2010模板应用为“点标题” - 类似于Point Pages行为。
含义:
假设以下标题格式:
标题2 - 1.1
标题3 - 1.1.1
标题4 - 1.1.1.1
标题5 - 1.1.1.1.1
目的是保持编号列表之间存在编号并添加
例如:
在两个Heading 3样式标题1.3.5和1.3.6之间将出现1.3.5.A,然后是1.3.5.B,依此类推。显然要求1.3.6不会改变。
我希望得到什么&到达那里的最简单方法(在我看来):
我想要4个宏子程序(每个标题样式一个)将插入当前插入位置(可以假设Selection
仅是插入位置)所选的“点标题”。
我的想法是执行以下流程:
(行格式:行动 - 示例)
ListFormat.ListString
) - 结果:复制值1.2.2 到目前为止我尝试了什么:
第一次完整性检查是在multiLevel列表菜单中手动插入新的列表样式。问题是这种风格不能多次使用(或者至少是我所见过的)。如果我想更改数字前缀,它适用于所有具有相同风格的兄弟姐妹。
然后我尝试了从HERE获取的代码段并进行了一些调整
Sub applyPointHeadingTest()
With ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(2)
.NumberFormat = "1.1.%2"
.TrailingCharacter = wdTrailingSpace
.NumberStyle = wdListNumberStyleUppercaseLetter
.NumberPosition = CentimetersToPoints(0)
.Alignment = wdListLevelAlignLeft
.TextPosition = CentimetersToPoints(5.31)
.TabPosition = CentimetersToPoints(5.95)
.StartAt = 1
.LinkedStyle = "Point Heading Style 2"
End With
ListGalleries(wdOutlineNumberGallery).ListTemplates(1).name = "ComplexNo2"
Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _
ContinuePreviousList:=True, ApplyTo:=wdListApplyToSelection, _
DefaultListBehavior:=wdWord10ListBehavior
End Sub
虽然这是我第一次运行该方法,但在下次执行时,它会更改文档中的每个列表。
基本上就是这样。我没有想法..
有谁能指导我怎么做?
感谢。
答案 0 :(得分:2)
现场代码可用于"间歇性"编号与标题编号相关,但由于某些原因在分配给标题级别的ListTemplate中不合适。此编号是动态的,因为它根据前面的引用编号进行更新。但是,它不能自动更新 - 必须手动更新字段结果(F9,最常见的是Ctrl + A,整个文档的F9)或使用宏(Fields.Update
)。您还可以将文档的打印选项设置为自动更新字段。
对于您概述的情况,这对字段应该有效:
{ StyleRef 3 \n }{ SEQ "between" \* ALPHABETIC \s 3 }
StyleRef
反映了指定样式的第一个前一个实例。在这种情况下,那个"标题3" - 您可以使用1 - 9指定内置标题样式,使字段本地语言独立。\n
仅显示编号,无文字。SEQ
插入顺序编号 - 您为整个文档中属于该序列的编号指定标签。\* ALPHABETIC
将结果放入大写字母。\s
可让您从标题级别开始说它应该重新开始编号。如果您想使用代码插入这些字段,那么这些内容就是这样的:
Dim rng As word.Range
Dim fld As word.Field
Dim sQuote As String
sQuote = Chr(34)
Set rng = Selection.Range
Set fld = rng.Fields.Add(rng, wdFieldEmpty, "StyleRef 3 \n", False)
Set rng = fld.result
'Move focus after the inserted field
rng.Collapse wdCollapseEnd
rng.MoveStart wdCharacter, 1
rng.InsertAfter "."
rng.Collapse wdCollapseEnd
rng.Fields.Add rng, wdFieldEmpty, "SEQ " & sQuote & "between" & _
sQuote & " \* ALPHABETIC \s 3", False
rng.Parent.Fields.Update 'update fields in the document body