以下是用操作实现目标: 1.选中表格,把表格转换成文本,分隔符号选制表符,再把制表符(^t)替换成","(把表格直接转成逗号时,逗号前会有多余字符) 2.再把",,,,,,,,,^p"(9个逗号加段落标志)替换掉--这是在删空行 3.再把",,"替换成",0,",这个要重复一次,然后再把",^p"换成",0^p",防止最后一列为空,最后再把"^p,"换成"^p0,"防止首列为空 4.再在"表格"菜单中选中文字转换成表格,分隔符选逗号 5.选中第一列,右击鼠标,选插入一列.在第一个单元格输入";",然后选中第一列的前4个单元格,并复制,再选中第一列,并粘贴,再复制(第一列),把输入焦点移到表格外第一行的段落标志前,粘贴. 6.再选中表格,把表格转换成文本,用查找,把"突出显示..."方框打上勾,使用通配符,查找字符串":*:",点查找全部,关掉查找对话框,选粗体字(Ctrl+b).,按Ctrl+End到达文件末尾,按delete,删掉多余的一行(这是表格造成的,也可能不删,).按Ctrl+a,选中全部文本(如果不删那一个空段落标志,就用Shift+Ctrl+Home选中文本). 7.再把文本转换成表格,用默认设置就行.然后把第一列和最后一列删除.选中表格第一行按Ctrl+b(为的是标题行加粗,由于原文档有加粗,这样在上次加粗时它失效了,因此要再加粗),再点"表格"菜单中的"表格属性",在"行"标签里,勾中"在各页顶端以标题行...",再到"列"标签中去,点"后一列",设置各列列宽2,1.5,2.5,2.5,1.5,1,1.5,2, 1.5,4).注意,如果不点"后一列"按钮时,设置的是所有列的列宽,对话框中有显示.最后确认,完工.
Sub SixthMacro() Dim ColsW As Variant, myTable As Table, i%, tmpCell As Cell, pP$ ColsW = Array(2, 1.5, 2.5, 2.5, 1.5, 1, 1.5, 2, 1.5, 4) '表格列宽 Set myTable = ThisDocument.Tables(1) '把表赋给变量 Debug.Print Now() With myTable .Rows(1).HeadingFormat = False '取消标题行 .Range.Font.Bold = False '取消粗体字 Do i = i + 1 '首行行号是1,故i要+1 Application.StatusBar = "正在处理: 空行..." & i If Len(.Rows(i).Range.Text) = 22 Then '空单元格仍包括2个字符chr(13)和chr(7),如果能用字符表达出来,程序可以更快 .Rows(i).Delete '删空行 i = i - 1 '回到前一行,重新开始 End If Loop Until i >= .Rows.Count '对每一行进行处理 For i = 1 To .Rows.Count Step 4 '每4行,所以step为4 .Rows(i).Range.Font.Bold = True '设置为粗体 Application.StatusBar = "正在处理: 第4行们..." & i Next Application.StatusBar = "正在处理: 空值..." For Each tmpCell In .Range.Cells '在各单元格间循环 If Len(tmpCell.Range.Text) = 2 Then tmpCell.Range.Text = 0 '空的置0 Next ' Replace .Range.Text, "Zero", 0 .Rows(1).HeadingFormat = True '设置标题行 Application.StatusBar = "正在处理: 表格列宽..." For i = 1 To .Columns.Count .Columns(i).Width = CentimetersToPoints(ColsW(i - 1)) '设置表格列宽 Next Application.StatusBar = False .Cell(1, 1).Select End With Set myTable = Nothing Debug.Print Now() End Sub
[此贴子已经被守柔于2005-12-23 6:11:23编辑过] |