我使用的是 Word 2010。
當我在文件中建立欄位時,當我強制更新該欄位時(例如,使用 F9 或右鍵點擊選單選項)或作為開啟或列印文件的副作用,該欄位會被更新。一切都很好 - 這就是我使用字段的原因。當然,很多時候(有時是大部分時間),欄位更新不會導致結果文字發生任何變化。例如,{numpages} 或交叉引用或檔案名稱可能不會變更。
不幸的是,如果我打開了修訂跟踪,則每個字段更新都會標記為刪除(刪除)舊結果,並插入新值。即使值沒有改變也會發生這種情況。經過幾次開啟、關閉、列印、更新等操作後,您最終會得到如下所示的結果(由於編輯器的限制,我在本範例中使用粗體而不是下劃線)以進行交叉引用
參見部分2.3.4
2.3.42.3.42.3.4
恕我直言,如果結果文字未更改,Word 不應將其視為修訂版。如果有辦法讓 Word 做到這一點,我想知道。
作為替代方案,如果有某種方法可以輕鬆地從我的文件中刪除這些多餘的(非)修訂(同時保留所有「真實」修訂),那將是我的問題的另一種解決方案。
謝謝,
約什
答案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
我最近意識到,我提出的問題的解決方案是根本不使用修訂標記。相反,在完成所有更改後,我使用“比較文件”來建立文件的修訂版標記版本。在進行比較時,我確保不選擇這領域比較設定下的選項:
因為我平常不關心格式化和空白區域更改我也取消選擇這些選項。最終結果(我一般選擇創建一個新文件)為我提供了一份包含顯著更改的文檔,並且沒有不重要和分散注意力的(非)更改(例如字段值)。