这是某软件开发中心的一位网友当时问我的一个回答,供楼主参考: “我的问题是,当这些表格不满一个页面的时候想用空行填充,使其布满一页
(当行数太少时太难看)如果行数太多,延伸到第二个页面,但第二个页面布满时,也用空
行填充,使其布满第二个页面;所有表格都这样设计;用宏能实现这个功能吗?” '* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-10-10 6:01:00
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'№ 00050^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------Option Explicit
Sub Example()
'几个注意事项:
'本代码应: 每节中的第一个表格中应处于该节页面中的0位置 , 也就是从本页面的开始处
'每个页面中 , 表格行数假定为43行, 如果超过43行, 将会移到下一页
'各单元格行距固定,不存在自动换行情况
'表格不存在合并现象
'如果在外来程序中调用WORD,请注意SELECTION对象应为WORD.ACTIVEDOCUMENT.ACTIVEWINDOW.SELECTION对象
Dim oSec As Section, aTable As Table, FirstCellPage As Integer
Dim EndCellPage As Integer, RowCount As Integer, CellsCount As Integer
Application.ScreenUpdating = False '关闭屏幕更新
For Each oSec In ActiveDocument.Sections
Set aTable = oSec.Range.Tables(1) '定义为节中的第一个表格对象
With aTable
CellsCount = .Range.Cells.Count '取得单元格总数
RowCount = .Rows.Count '取得总行数
'取得第一个单元格的页数
FirstCellPage = .Range.Cells(1).Range.Information(wdActiveEndPageNumber)
'取得最后一个单元格的页数
EndCellPage = .Range.Cells(CellsCount).Range.Information(wdActiveEndPageNumber)
'如果处于同一页但行数小于43,补入行数
If FirstCellPage = EndCellPage And RowCount < 43 Then
.Rows(RowCount).Select
Selection.InsertRowsBelow (43 - RowCount)
'如果处于不同页,补入行数
ElseIf EndCellPage > FirstCellPage And RowCount < (EndCellPage - FirstCellPage + 1) * 43 Then
.Rows(RowCount).Select
Selection.InsertRowsBelow ((EndCellPage - FirstCellPage + 1) * 43 - RowCount)
End If
End With
Next
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
'----------------------
|