我正在使用 Word 2010。据我所知,这个问题从一开始就存在于 Word 中。
当我在文档中创建字段时,当我强制更新该字段(例如,使用 F9 或右键单击菜单选项)或作为打开或打印文件的副作用时,该字段会更新。这一切都很好 - 这就是我使用字段的原因。当然,大多数时候(有时是大多数时候),字段更新不会导致结果文本发生变化。例如,{numpages} 或交叉引用或文件名可能保持不变。
不幸的是,如果我打开了修订跟踪,则每个字段更新都会标记旧结果被删除,并插入新值。即使值没有改变,也会发生这种情况。经过几次打开、关闭、打印、更新等操作后,您最终会得到如下所示的内容(由于编辑器的限制,我在此示例中使用了粗体而不是下划线)以进行交叉引用
请参阅章节2.3.4
2.3.42.3.42.3.4
恕我直言,如果结果文本没有改变,Word 不应该将其视为修订。如果有办法让 Word 首先做到这一点,我很想知道。
或者,如果有某种方法可以轻松地从我的文档中删除这些多余的(非)修订(同时保留所有“真实”修订),那将是解决我的问题的另一种方法。
谢谢,
Yosh
答案1
虽然这不是一个完整的解决方案,但您可以通过在更新前关闭跟踪的修订,然后在更新完成后重新打开它们来避免重复修订。您可以进一步将宏绑定到键盘快捷键,以自动执行这些步骤。
如果字段在打印前自动更新,恐怕这不会有太大帮助,但是你可以选择关闭该行为,方法是进入选项菜单,进入展示并取消勾选打印前更新字段。
编辑:我编写了以下宏,该宏应从字段中删除此类不必要的修订。如果可能的话,可能需要一些速度改进。
Sub RemoveUnchangedFieldTrackedChanges()
Dim oField As Field
Dim oRevision As Revision
For Each oField In ActiveDocument.Fields
For Each oRevision In oField.Parent.Range.Revisions
Select Case oRevision.Type
Case wdRevisionInsert
With oRevision
revisionText = .Range.Text
For Each iRevision In oField.Parent.Range.Revisions
Select Case iRevision.Type
Case wdRevisionDelete
With iRevision
If StrComp(revisionText, iRevision.Range, vbTextCompare) = 0 Then
oRevision.Accept
iRevision.Accept
End If
End With
End Select
Next iRevision
End With
End Select
Next oRevision
Next oField
End Sub
答案2
我最近意识到,我提出的问题的解决方案是根本不使用修订标记。相反,在我完成所有更改后,我使用“比较文件”来创建带有修订标记的文档版本。在进行比较时,我确保不选择这字段比较设置下的选项:
因为我通常不关心格式化和白色空间更改我也取消选择这些选项。最终结果(我通常选择创建一个新建文档) 为我提供一份包含显著变化且不包含不重要和分散注意力的(非)变化(如字段值)的文档。