在Word 2013中使用VBA。
在Word对象模型中,Document.Revisions为您提供了一组修订对象(跟踪的更改),您可以通过编程方式接受或拒绝它们。此外,集合本身具有一个Count属性。
我没有在对象模型中找到任何公开撤销/重做计数或历史记录的特性。为了澄清,我正在寻找一种方法来确定在给定时间内撤消堆栈和重做堆栈中有多少用户更改(因为我不是通过宏编辑文档内容)。能够看到可用于撤消或重做的单个更改,这将是一个额外的好处,但如果没有它,我还好。
我知道我可以使用Document.Undo和Document.Redo方法,但是我看不出有什么方法可以得到可以撤消的更改的计数,或者可以重做的未完成的更改的计数。
可以这样说,我可以通过调用Document.Undo或.Redo来迭代堆栈,并检查返回值以查看那里是否有任何内容,然后逆转刚才撤消/重做的内容。我希望能有类似于Document.Revisions.Count的东西。
编辑:我需要访问重做堆栈。看起来,对象模型似乎没有公开该对象。这里记录的一个古老的(2013年)问题表明,没有这样的对象/集合(搜索"redorecord")。
有什么想法吗?
谢谢!
发布于 2020-05-01 23:03:43
您可以创建和部署一个自定义UndoRecord,这样您就可以在结束时通过'ActiveDocument.Undo‘这样的代码一次回滚所有操作,而不需要跟踪所有干预的编辑。请参阅:https://learn.microsoft.com/en-us/office/vba/word/Concepts/Working-with-Word/working-with-the-undorecord-object
要将其部署到文档本身中的最终用户操作,只需使用:
Option Explicit
Dim objUndo As UndoRecord
Sub CreateUndoRecord()
Set objUndo = Application.UndoRecord
objUndo.StartCustomRecord
End Sub若要创建自定义记录,完成后,请使用以下内容清除该批次:
Sub ClearUndoRecord()
objUndo.EndCustomRecord
ActiveDocument.Undo
End Subhttps://stackoverflow.com/questions/61546690
复制相似问题