在旧版本的Word中,您可以执行以下操作来重置用户选择忽略的字词:
Application.ResetIgnoreAll();
ActiveDocument.SpellingChecked = false;
ActiveDocument.CheckSpelling();
我正在VSTO for Word 2010中尝试同样的功能,当它重新检查“忽略一次”的单词时,它不会重新检查'忽略全部'的单词。我已经尝试录制宏,同时转到选项 - >校对并点击“重新检查文档”,虽然这确实正确地重置了忽略所有列表,但它生成的宏与上面的代码相同。
是否有人知道这是否是Word 2010 / VSTO中的错误,或者是否有其他方法可以重置“忽略所有”列表?
答案 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按钮,可以根据需要按下该按钮进行测试。