4

我们正在以编程方式在 Word 文档中插入内容控件,并且我们不想将操作添加到 Word 的撤消堆栈中。我们发现的唯一方法是访问 undo commandbar-combobox 并删除与插入内容控制操作相关的项目,我们使用以下代码:

var commandBars = _wordDocument.CommandBars.Cast<CommandBar>();
var standardCommandBar = commandBars.First(bar => bar.Name.Equals("Standard"));
CommandBarComboBox undoControl = 
                     standardCommandBar.Controls
                     .Cast<CommandBarControl>()
                     .First(control => control.Id == 128) as CommandBarComboBox;

undoControl.RemoveItem(1);

最后一行undoControl.RemoveItem(1)抛出 ComException HRESULT E_FAIL

有没有办法从撤消重做组合框中删除操作?

4

1 回答 1

0

由于你的问题,我和你有同样的问题,但现在它已经解决了。

  var commandBars = WordDoc.CommandBars.Cast<CommandBar>();
  var standardCommandBar = commandBars.First(bar => bar.Name.Equals("Standard"));
  CommandBarComboBox undoControl = standardCommandBar.Controls
                   .Cast<CommandBarControl>()
                   .First(control => control.Id == 128) as CommandBarComboBox;

您的代码将返回撤消列表中的最后一个对象。现在您可以根据您的要求添加检查。

        if (undoControl.accName.ToLower().Contains("range.case"))
            WordApp.ActiveDocument.Undo(3);
        else if (undoControl.accName.ToLower().Contains("font.reset"))
            WordApp.ActiveDocument.Undo(2);

        else WordApp.ActiveDocument.Undo(1);

微软Word

于 2022-01-19T17:33:40.640 回答