【问题标题】:Collection similar to Document.Revisions类似于 Document.Revisions 的集合
【发布时间】:2020-05-01 16:37:47
【问题描述】:

在 Word 2013 中使用 VBA。

在 Word 对象模型中,Document.Revisions 为您提供了修订对象(跟踪更改)的集合,您可以通过编程方式接受或拒绝它们。另外,集合本身有一个Count 属性。

我在对象模型中没有发现任何公开撤消/重做计数或历史记录的功能。为了澄清,我正在寻找一种方法来确定在给定时间撤消堆栈和重做堆栈中有多少 用户 更改(因为我没有通过宏编辑文档内容)。能够查看可撤消或重做的单个更改将是一个额外的好处,但我没有那个没关系。

我知道我可以使用 Document.UndoDocument.Redo 方法,但我没有看到一种方法来获取可以撤消的更改计数或可以重做的撤消更改计数。

我想我可以通过调用Document.Undo.Redo 并检查返回值以查看其中是否有任何内容,然后反转我刚刚撤消/重做的内容来遍历堆栈。我希望有类似于Document.Revisions.Count 的东西。

编辑:我需要访问重做堆栈。它开始看起来好像对象模型没有公开该对象。记录here 的旧(2013 年)问题表明没有这样的对象/集合(搜索“redorecord”)。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    您可以创建和部署自定义 UndoRecord,这样您就可以在最后通过“ActiveDocument.Undo”之类的代码一次性回滚所有操作,而无需跟踪所有干预编辑。见:https://docs.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 Sub
    

    【讨论】:

    • 这很有趣。我不确定它是否满足我的需求。我觉得我的描述不清楚,所以我编辑了它。从我读到的有关 UndoRecord 的内容来看,听起来该对象仅记录 VBA 所做的更改。我正在寻找的是一种访问用户所做更改的撤消(和重做)堆栈的方法。这可能吗?
    • 天哪,我希望这能解决我的问题。但是,我仍然需要访问重做堆栈。它开始看起来好像对象模型没有公开该对象。请参阅我的进一步编辑。谢谢!
    • VBA 或 WordBasic 中没有与 UndoRecord 等效的 RedoRecord。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多