为Word标题快速添加自动编号
如果文档的标题级别不是太多,我们可以通过“相似文本”的功能解决这一问题,将光标放在某一级别的标题中间,在“编辑”功能组依次选择“选择→选择格式相似的文本”,可以看到所有的一级标题都已经被选中,接下来的操作就简单多了,在“段落”功能组的“标题”下拉列表选择相应的编号样式就可以了,效果如图1所示,其他级别的标题可以按照类似的步骤进行操作。
如果文档中的标题级别比较多,建议采取VBA代码实现,按入“Alt F11”组合键,打开Microsoft Visual Basic for Applications编辑器窗口,依次选择“插入→模块”,在右侧空格插入一个空白模块(如图2所示),在这里手工输入或粘贴如下代码:
Sub 多级列表样式运用()
Dim p As Range, doc As Document, s As Range, sr$, r1$, r2$, r3$, r4$, a, j&, x&, ksr$
Set doc=ActiveDocument
Set p=IIf(Selection.Type=wdSelectionIP, doc.Content, Selection.Range)
sr$='一二三四五六七八九十百零千〇'
r1$='[' & sr & ']@、': r2$='[((][' & sr & ']@[))]': r3$='[0-9]@[、..]': r4$='[((][0-9]@[))]'
a=Array(r1, r2, r3, r4)
Call ListTitles(doc)
For j=0 To UBound(a)
Set s=p.Duplicate
With s.Find
Do While .Execute(a(j), , , 1)
If Not s.InRange(p) Then Exit Do
With .Parent
If Not .Information(wdWithInTable) Then
x=Len(.Text): ksr=.Text
.Expand 4: .Collapse
If .MoveWhile(ksr, x)=x Then
.MoveStart , -x: .Text=Empty
.Style=ActiveDocument.Styles('标题 ' & j 2)
Else
.Move 4, 1
End If
End If
End With
Loop
End With
Next
p.ListFormat.ConvertNumbersToText
End Sub
Sub ListTitles(doc As Document)
Dim LtTemp As ListTemplate, i%, a
Set LtTemp=doc.ListTemplates.Add(True)
On Error Resume Next
a=Array(6, 5, 11, 12)
For i=2 To 5
With LtTemp.ListLevels(i)
If i=2 Then .NumberFormat='%2、': .NumberStyle=37
If i=3 Then .NumberFormat='(%3)': .NumberStyle=37
If i=4 Then .NumberFormat='%4.': .NumberStyle=0
If i=5 Then .NumberFormat='(%5)': .NumberStyle=0
.TrailingCharacter=2: .StartAt=1: .ResetOnHigher=True
.LinkedStyle='标题 ' & i
doc.Styles('标题 ' & i).Font.ColorIndex=a(i - 2)
End With
Next
End Sub
代码检查无误之后,依次选择“文件→关闭并返回到Microsoft Word”命令,返回Word主界面,按下“Alt F8”组合键,打开“宏”对话框,选择并运行宏,很快就可以看到相应的编号效果。
◇江苏 王志军