|
总感觉选择和移动部分代码有问题,仔细查阅文档做出改进。
并对关键代码加了注释助于理解(前辈们的注释极大的加快了我的学习进程)。
针对该示例文档,代码1秒执行完成,作为入门月余的新手还是有点小小的成就感,共勉
- Sub 插入表格3()
- Dim i As Paragraph
- Application.ScreenUpdating = False
- For Each i In ActiveDocument.Paragraphs
- If Len(Trim(i.Range)) = 1 Then '
- i.Range.Delete '删除空段
- ElseIf i.Range.Bold Then '查找条件可在这里改成其它样式
- n = n + 1 '生成文件编号
- i.Range.Select
- Selection.ParagraphFormat.PageBreakBefore = True '将找到的标题设置段前分页
- With Selection
- c = Replace(.Range.Text, Chr(13), "") '获取标题内容以备插入第一个单元格
- .MoveDown wdParagraph '移动光标至下一段首
- Set myTable = ActiveDocument.Tables.Add(.Range, 3, 2) '插入3行2列表格
- With .Tables(1)
- .Style = "网格型"
- .Cell(1, 1).Range.InsertAfter Text:="题目:" & c
- .Cell(2, 1).Range.InsertAfter Text:="修改日期:年月日"
- .Cell(3, 1).Range.InsertAfter Text:="生效日期:年月日"
- .Cell(1, 2).Range.InsertAfter Text:="文件号:阳光医疗集团-" & n
- .Cell(2, 2).Range.InsertAfter Text:="版本号:"
- .Cell(3, 2).Range.InsertAfter Text:="页数:"
- .Select
- .Range.Font.Name = "仿宋"
- .Range.Font.Size = 14
- .Columns.AutoFit '自动列宽
- .AutoFitBehavior (wdAutoFitWindow) '根据窗口自动调整表格
- End With
- .Cells.VerticalAlignment = wdCellAlignVerticalCenter '垂直居中
- .Collapse wdCollapseEnd '光标移出表格
- End With
- End If
- Next
- j = ActiveDocument.Tables.Count '
- For k = 1 To j
- With ActiveDocument
- If k = j Then
- page = .Range.Information(4) - .Tables(k).Range.Information(3) + 1 '最后一个表格的页数由文档总页数减当前页码加1得到
- .Tables(k).Cell(3, 2).Range.InsertAfter page
- Exit For
- End If
- page = .Tables(k + 1).Range.Information(3) - .Tables(k).Range.Information(3) '下一表格所在的页码减当前表格所在的页码得到页数
- .Tables(k).Cell(3, 2).Range.InsertAfter page
- End With
- Next
- Selection.HomeKey wdStory '过程结束后光标返回文档开头
- Application.ScreenUpdating = True
- End Sub
复制代码
|
评分
-
2
查看全部评分
-
|