如何通过Office Interop从C#访问Excel中的撤消堆栈?
我正在构建一个C#应用程序,它需要通过Office Interop与Excel电子表格交互。我希望能够访问完整的撤消堆栈,以便对工作表进行一系列更改,然后在必要时一次回滚一个。我看到互操作程序集中的Word文档对象具有UndoRecord和其他一些细节,包括一个Undo函数。例如,我可以使用参数调用Microsoft.Office.Interop.Word.\u Document.Undo(),以撤消多个操作。另一方面,Excel的撤销功能看起来更加有限。当然,还有Microsoft.Office.Interop.Excel.\u Application.Undo(),但它只执行一个操作,如果再次调用,则执行“重做”,而不是深入堆栈如何通过Office Interop从C#访问Excel中的撤消堆栈?,c#,excel,ms-word,office-interop,C#,Excel,Ms Word,Office Interop,我正在构建一个C#应用程序,它需要通过Office Interop与Excel电子表格交互。我希望能够访问完整的撤消堆栈,以便对工作表进行一系列更改,然后在必要时一次回滚一个。我看到互操作程序集中的Word文档对象具有UndoRecord和其他一些细节,包括一个Undo函数。例如,我可以使用参数调用Microsoft.Office.Interop.Word.\u Document.Undo(),以撤消多个操作。另一方面,Excel的撤销功能看起来更加有限。当然,还有Microsoft.Offic
我在网上找到了VBA开发人员为Excel编写自己的撤消历史记录的代码,因为这是获得所需功能的唯一方法。不过,我在C#身上看不到这样的东西。有没有办法模仿Word的互操作撤消在Excel中的工作方式?唉,Word的情况不适用于Excel。可能是因为越来越多的人写VBA:)。有关Excel VBA(和互操作)中可能的内容,请参见此。以下是他的部分描述: 使子例程的效果可撤消并不是自动的。你的 子例程将需要存储以前的状态,以便恢复 如果用户选择“编辑撤消”命令。你怎么做会有所不同, 取决于子程序的功能。在极端情况下,您可能会 需要保存整个工作表。如果您的子程序修改了一个范围, 例如,您只需要保存该范围的内容 编辑: 有
应用程序.Undo
方法,但它非常有限。以下是Excel 2010 VBA帮助中的说明:
应用程序。撤消方法
取消上一个用户界面操作
备注此方法仅撤消用户执行的最后一个操作
在运行宏之前,它必须是宏中的第一行。
它不能用于撤消Visual Basic命令
特别是在互操作方面,我确信VBA本身没有其他可用的工具。唉,Word的适用范围并不局限于Excel。可能是因为越来越多的人写VBA:)。有关Excel VBA(和互操作)中可能的内容,请参见此。以下是他的部分描述: 使子例程的效果可撤消并不是自动的。你的 子例程将需要存储以前的状态,以便恢复 如果用户选择“编辑撤消”命令。你怎么做会有所不同, 取决于子程序的功能。在极端情况下,您可能会 需要保存整个工作表。如果您的子程序修改了一个范围, 例如,您只需要保存该范围的内容 编辑: 有
应用程序.Undo
方法,但它非常有限。以下是Excel 2010 VBA帮助中的说明:
应用程序。撤消方法
取消上一个用户界面操作
备注此方法仅撤消用户执行的最后一个操作
在运行宏之前,它必须是宏中的第一行。
它不能用于撤消Visual Basic命令
特别是在互操作方面,我确信VBA本身没有什么不可用的功能。但是,用户采取的操作如何?是否无法通过互操作打开工作表,让用户在单元格中键入内容等,然后通过编程撤消其操作?但是,用户采取的操作又如何呢?是否无法通过互操作打开工作表,让用户键入单元格等,然后通过编程撤消其操作?