我曾在 Word 中打开 PDF 文件以进行编辑(原始 Word 文档已丢失)。在转换过程中,每行文本和每个表格单元格都被赋予了一个额外的空格。当然,除了我和我的轻微强迫症之外,它们并没有真正伤害任何人。我不喜欢尾随空格。
删除行尾的尾随空格很简单(搜索" ^p"
并替换"^p"
),但在查找/替换对话框中似乎没有“表格单元格标记末尾”的特殊字符,并且单词“正则表达式”引擎似乎不支持锚点任何一个。
谷歌搜索让我关于如何添加表格单元格末尾的某物(我计划"§§§"
在每个单元格中添加类似的内容,然后进行简单的搜索/替换" §§§"
),但在 Word 2016 中,我找不到样式“表格单元格”,至少在德语版 Word 中找不到。
还有其他我可以尝试的想法吗?另外,知道如何删除一个或多个行尾或表格单元格末尾有空格?量词似乎在非正则表达式查找/替换中不起作用。
答案1
好的,我一直在研究 Word VBA 对象模型并得出这个(启用 Microsoft VBScript 正则表达式 5.5):
Sub TrimCellSpaces()
Dim myRE As New RegExp
Dim itable As Table
Dim C As Cell
myRE.Pattern = "\s+(?!.*\w)"
For Each itable In ThisDocument.Tables
For Each C In itable.Range.Cells
With myRE
C.Range.Text = .Replace(C.Range.Text, "")
End With
Next
Next
End Sub
有趣的是,我最初的尝试(使用Trim(C.Range.Text)
)并没有删除空格,相反,它添加每个单元格末尾都有一个段落标记。对此感到困惑,我尝试了一个正则表达式,\s+$
结果相同。检查本地对象树后,我发现包含文本的单元格Note
实际上包含Note \x0d\x0d\x07
(我后来发现了为什么会这样)。这就是为什么我必须使用那个奇怪的正则表达式来查找单元格中的最后一个空格……
答案2
我使用了 Tim Pietzcker 的 Sub 的修改版,其中我结合使用了左边()和修剪()而不是 regExp(也可以使用活动文档代替这个文件):
Sub TrimCellSpaces()
Dim itable As Table
Dim C As Cell
For Each itable In ActiveDocument.Tables
For Each C In itable.Range.Cells
C.Range.Text = Trim(Left(C.Range.Text, Len(C.Range.Text) - 2))
Next
Next
End Sub
答案3
这指南您找到似乎包含答案:为受影响的单元格分配样式。
如果需要,请基于单元格已有的样式为此目的创建一个新样式。然后,您可以返回上一个样式,或保留新样式。