我已经寻找这个问题的答案很长时间了,但没有结果,所以我希望这里有人能帮助我。
我最近将一个文档从 FineReader 12 导出到 Word。该文档基本上是一个 130 页长的表格。表格有常规形状:5 列,没有合并单元格。
然而,当我合并各个表(FineReader 按页面将它们拆分)通过删除它们之间的线条合并为一个,表格在每个连接处都会得到一个不规则的形状,如下所示:
。
考虑到我拥有的桌子数量,有没有办法彻底重置它们的形状?到目前为止,我似乎必须手动调整每个表的列以适应其他列。
我尝试重置表格和列宽、文字换行等;我也选择了整个表格并检查,然后取消选中所有“表格标题”勾选。
将表格转换为文本并转换回来不起作用,因为某些单元格有段落分隔符,这需要稍后处理。
答案1
好的,Paul Edstein 又名 macropod 给了我一个答案MS Office 论坛我稍加修改后,现在它运行得很好。我把解决方案粘贴在这里,因为它可以为任何使用 OCR 等的人节省几十个小时的工作时间。
这个想法是制作一个宏,重新格式化每个表格(如果需要,还有每个单元格)的布局,如下所示:
Sub FixTables()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim Tbl As Table, i As Long
With ActiveDocument
For Each Tbl In .Tables
With Tbl
With .Rows
.LeftIndent = 0
.WrapAroundText = False
.Alignment = wdAlignRowCenter
End With
.TopPadding = 0
.LeftPadding = 0
.RightPadding = 0
.BottomPadding = 0
.AllowAutoFit = False
.PreferredWidthType = wdPreferredWidthAuto
If .Uniform Then
.Columns(1).Width = CentimetersToPoints(1#)
.Columns(2).Width = CentimetersToPoints(3.75)
.Columns(3).Width = CentimetersToPoints(3.75)
.Columns(4).Width = CentimetersToPoints(3.75)
.Columns(5).Width = CentimetersToPoints(3.75)
Else
For i = 1 To .Range.Cells.Count
Select Case (i - 1 Mod 5) + 1
Case 1: .Range.Cells(i).Width = CentimetersToPoints(1#)
Case Else: .Range.Cells(i).Width = CentimetersToPoints(3.75)
End Select
Next
End If
End With
While .Tables.Count > 1
.Tables(1).Range.Characters.Last.Next.Delete
Wend
Next
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
唯一的缺点是,虽然它只用几秒钟就可以完成 3 个表格的执行,但对一组 50 个表格执行更改却需要大约 15 分钟。对此的调整包括暂时关闭 Word 中的屏幕刷新并抑制所有警报(否则每次 Word 耗尽 RAM 时它都会要求保存更改)。
请注意此解决方案仅适用于 5 列,因此请进行相应调整!