|
TableJoiner() 是“目录类型邮件合并指引”帖子,目录合并成的一个个表格后的回车删除,连接成一个大表的VBA代码(老外写的)。我是480个两行16列的合并表格,运行起来奇慢无比,还不如我手工删除的快!在我的笔记本上运行一晚上也无反应,只有在我家的i7 920台式机上,运行半天,才得出结果。后分析估计是每个单元格都是一个段落,估计它是遍历了所有的单元格,所以才慢!
TableJoinerNew()是我写的,思路是循环文档中所有的表格,选择表的最后一行,然后下移一行跳出表格,再选择当前行,如果是回车,就删除。运行速度挺快的,结果似乎也是正确的。
我是首次写Word VBA代码,请守柔版主帮忙看看,是否写的啰嗦,有无问题,特别是否存在副作用。谢谢!
Sub TableJoiner()
Dim oPara As Paragraph
Application.ScreenUpdating = False '关闭屏幕更新
For Each oPara In ActiveDocument.Paragraphs
With oPara.Range
If .Information(wdWithInTable) = True Then
With .Next
If .Information(wdWithInTable) = False Then
If .Text = vbCr Then .Delete
End If
End With
End If
End With
Next
Application.ScreenUpdating = True '打开屏幕更新
End Sub
'------------------------------
Sub TableJoinerNew()
Dim oTab As Table
Application.ScreenUpdating = False '关闭屏幕更新
For Each oTab In ActiveDocument.Tables
oTab.Cell(oTab.Rows.Count, 1).Select
Selection.SelectRow
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
If Selection.Range.Text = vbCr Then Selection.Range.Delete
Next
Application.ScreenUpdating = True '打开屏幕更新
End Sub |
|