代码之家  ›  专栏  ›  技术社区  ›  ChristianLinnell

在VBA中读取撤消历史记录

  •  5
  • ChristianLinnell  · 技术社区  · 17 年前

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

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

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

    是否有任何方法读取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 回复  |  直到 16 年前
        1
  •  4
  •   Community Mohan Dere    8 年前

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

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

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

        2
  •  0
  •   Fionnuala    17 年前

    我还没有测试过,但是也许你可以在你的操作之前使用UNDOCLEAR,并在之后使用UNDOCLEAR?

    ActiveDocument.UndoClear
    ActiveDocument.Undo 2
    
    推荐文章