在VBA中读取撤消历史记录

时间:2009-05-19 00:01:06

标签: 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

2 个答案:

答案 0 :(得分:4)

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

以下相关问题详情如下:

  

Can I create an undo transaction in Word or Excel? (VSTO)

答案 1 :(得分:0)

我还没有测试过,但也许你可以在你的行动之前使用UndoClear,然后依靠撤消?

ActiveDocument.UndoClear
ActiveDocument.Undo 2
相关问题