gpt4 book ai didi

vba - 在 Word 中反转跟踪更改的宏?

转载 作者:行者123 更新时间:2023-12-04 05:01:19 24 4
gpt4 key购买 nike

我的很多工作都涉及谈判技术契约(Contract),行业惯例是双方互相发送带标记的 MS Word 文档,显示他们想要的更改。在达成一致之前,这通常会发生多次。

通常一个段落会返回很多插入/删除,这是我们不想接受的。同样,惯例是即使拒绝这些更改也需要标记,因此现在必须将它们的每个单独插入(蓝色文本)标记为删除(红色删除线),反之亦然。

有人知道可以执行此操作的宏吗?或者知道怎么写?我花了几个小时在线搜索并试图自学编码,但我一无所获!

我认为最简单的方法是将选择中每个 RevisionRevision.Type 属性从 wdRevisionDelete 更改为 wdRevisionInsert(反之亦然),但这似乎是一个只读属性。

我试过将已删除的文本分配给一个字符串,接受更改,然后插入它,但无法将它放到正确的位置。我也找不到如何删除插入的文本,所以无法在等式的另一边找到任何地方。

有没有办法做到这一点?理想情况下,我可以选择一些文本,运行宏,然后“翻转”每个修订版。听起来很简单,但我找不到方法。老实说,它每月可以为我节省几个小时,所以如果有人能提供帮助,我将不胜感激。

提前致谢!詹姆斯

最佳答案

通常我不会回答没有代码的问题,但这看起来很有趣。

这对我有用(在运行前选择你想要处理的范围):

EDIT2:现在可以在不添加额外文本的情况下处理相邻的编辑

Sub FlipDeletesAndInserts()

Dim rng As Range, rev As Revision, rngRev As Range
Dim colDel As New Collection, colIns As New Collection
Dim step As Long, txt As String

If ActiveDocument.TrackRevisions Then
Debug.Print "Tracked..."
Else
MsgBox "Track changes is not on!"
Exit Sub
End If

Set rng = Selection.Range 'operate on the selected text

'Collect all of the revisions before changing anything,
' otherwise the new changes also will be processed!
For Each rev In rng.Revisions
If rev.Type = wdRevisionDelete Then colDel.Add rev
If rev.Type = wdRevisionInsert Then colIns.Add rev
Next rev

For Each rev In colIns
Set rngRev = rev.Range
Debug.Print "Inserted:", rngRev.Text
rev.Accept 'accept the new text
rngRev.Delete '...then delete it
Next rev

For Each rev In colDel
Set rngRev = rev.Range
'EDIT: grab the text before accepting...
txt = rngRev.Text
Debug.Print "Deleted:", txt
rev.Accept 'EDIT:added
'insert the same deleted text as an insert
' immediately after the deletion
rngRev.InsertAfter txt
Next rev

End Sub

之前和之后:

enter image description here

关于vba - 在 Word 中反转跟踪更改的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com