如何在VB.NET中通过Word VSTO列出撤销记录中的所有项?
在VSTO中获取Word撤销记录的所有项
在Microsoft Word编辑文档时,操作项会被添加到撤销记录中:
需求是通过VSTO列出撤销记录中的所有项,例如上图中的“输入‘abc’”、“增大字号”、“文本填充效果”。目前仅能实现检查撤销栈是否为空的功能,无法获取具体内容。
实现方案
Word对象模型没有直接提供读取撤销栈的API,但可以通过操作标准工具栏的撤销控件来获取列表内容,以下是C#代码示例:
using Microsoft.Office.Interop.Word; using Microsoft.Office.Tools.Word; public void RetrieveUndoItems() { Application wordApplication = Globals.ThisAddIn.Application; CommandBarControl undoBarControl = wordApplication.CommandBars["Standard"].Controls["撤销"]; if (undoBarControl is CommandBarPopup undoPopup) { foreach (CommandBarControl item in undoPopup.Controls) { // 提取操作描述,剔除快捷键提示(如\tCtrl+Z) string undoDescription = item.Caption.Split('\t')[0]; // 输出或保存撤销项描述 System.Diagnostics.Debug.WriteLine(undoDescription); } } }
注意事项
- 该方法依赖Word默认的标准工具栏,若用户自定义过工具栏布局或重命名了撤销控件,需要调整控件名称参数。
- 撤销项的标题会随Word语言版本变化,例如英文环境下控件名称为"Undo",需根据实际环境适配。
- 连续的同类型操作(如连续输入文字)会被Word合并为单个撤销项,无法拆分获取每一步细节。
内容的提问来源于stack exchange,提问作者user7391836
相关产品推荐
相关产品推荐

