5

我在 Word 2003 中有一个相当简单的 VBA,将文档的字体更改为“生态字体”(长篇故事),并打开“打印”对话框。

当用户点击取消或确定时,代码会执行“撤消”以恢复更改。

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

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

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

ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_") 
ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans" 
Dialogs(wdDialogFilePrint).Show 
While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_") 
    ActiveDocument.Undo 
Wend
4

2 回答 2

4

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

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

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

于 2009-05-20T10:28:30.627 回答
0

我还没有测试过,但也许你可以在你的动作之前使用 UndoClear,然后再使用 undo?

ActiveDocument.UndoClear
ActiveDocument.Undo 2
于 2009-05-19T11:29:36.643 回答