重置VSTO for Word 2010中忽略的拼写检查单词

时间:2011-04-12 01:38:45

标签: vba ms-word vsto word-vba

在旧版本的Word中,您可以执行以下操作来重置用户选择忽略的字词:

Application.ResetIgnoreAll();
ActiveDocument.SpellingChecked = false;
ActiveDocument.CheckSpelling();

我正在VSTO for Word 2010中尝试同样的功能,当它重新检查“忽略一次”的单词时,它不会重新检查'忽略全部'的单词。我已经尝试录制宏,同时转到选项 - >校对并点击“重新检查文档”,虽然这确实正确地重置了忽略所有列表,但它生成的宏与上面的代码相同。

是否有人知道这是否是Word 2010 / VSTO中的错误,或者是否有其他方法可以重置“忽略所有”列表?

1 个答案:

答案 0 :(得分:0)

这是一个错误,但VBA中有一种解决方法,您可以适应VSTO。正确识别后,ActiveDocument.SpellingChecked在Word对象模型中被破坏,但在选项|校对下的Backstage视图中,重新检查文档按钮正常工作。虽然宏录制器不会显示执行此操作的命令,但可以使用Word内置宏和SendKeys的组合导航到按钮"手动"执行命令:

Application.Run MacroName:="FileNewDialog" 'Access Backstage view
SendKeys "%TP" 'Options|Proofing
SendKeys "%K" 'Recheck Document button
SendKeys "%Y" 'Yes button for confirmation message box
SendKeys "{ENTER}", True 'Exit the dialog box
SendKeys "{F7}" 'Perform spell check

由于SendKeys将Word置于某种手动模式,因此程序通常会在退出Backstage视图时忽略编程命令。这就是上述代码使用F7击键来执行拼写检查而不是ActiveDocument.CheckSpelling的原因。

关于测试SendKeys的重要说明:无法通过逐步执行VBA IDE中的代码来测试SendKeys,因为它在运行时发送的键击在执行时被发送到活动窗口(将是VBA开发窗口)。要测试SendKeys,请保存宏并将其附加到QAT按钮,可以根据需要按下该按钮进行测试。