在VBA中读取撤消历史记录

Chr*_*ell 5 vba ms-word undo

我在Word 2003中有一个相当简单的VBA,它将文档的字体更改为"eco font"(长篇故事),然后打开"打印"对话框.

当用户点击"取消"或"确定"时,代码会执行"撤消"以还原更改.

问题是,有时当我按"确定"打印文档时,需要撤消两个操作('字体更改'和'更新字段').我似乎无法预测何时会发生这种情况.

有没有办法读取Word的撤消缓冲区中的最后一项?这样我就可以继续按下撤消,直到字体更改完成.

编辑: 最终代码(缩减):

ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_") 
ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans" 
Dialogs(wdDialogFilePrint).Show 
While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_") 
    ActiveDocument.Undo 
Wend
Run Code Online (Sandbox Code Playgroud)

Dir*_*mar 4

您可以使用一个技巧在 Word 中进行类似“事务”的撤消操作:在宏的开头在整个文档上放置一个特殊的书签。完成宏后,您应该再次删除此书签。现在,当调用“撤消”命令时,当文档中存在您的特殊书签时重复撤消操作。

以下相关问题有详细信息:

我可以在 Word 或 Excel 中创建撤消事务吗?(VSTO)