在旧版本的Word中,您可以执行以下操作来重置用户选择忽略的单词:
Application.ResetIgnoreAll();
ActiveDocument.SpellingChecked = false;
ActiveDocument.CheckSpelling();我正尝试在Word 2010的VSTO中使用同样的功能,虽然它会重新检查“忽略一次”的单词,但不会重新检查“全部忽略”的单词。我尝试在进入“选项”->“校对”并单击“重新检查文档”时录制宏,虽然这确实正确地重置了“全部忽略”列表,但它生成的宏与上面的代码相同。
有没有人知道这是Word 2010/VSTO中的一个bug,或者是否有不同的方法来重置“全部忽略”列表?
发布于 2011-08-16 23:56:36
这是一个错误,但在VBA中有一个解决方法,您可以针对VSTO进行调整。正如您正确识别的那样,ActiveDocument.SpellingChecked在Word对象模型中已损坏,但在Backstage视图中的选项|校对Recheck Document按钮下可以正常工作。尽管宏录制器不会显示执行此操作的命令,但用户可以使用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置于一种手动模式,因此程序在退出后台视图时通常会忽略编程命令。这就是为什么上面的代码使用F7键击而不是ActiveDocument.CheckSpelling来执行拼写检查。
关于测试SendKeys 的重要说明:SendKeys不能通过单步执行VBA IDE中的代码来测试,因为它在运行时发出的击键会在执行时发送到活动窗口(即VBA开发窗口)。要测试SendKeys,请保存宏并将其附加到QAT按钮,该按钮可以根据需要按下以进行测试。
https://stackoverflow.com/questions/5629485
复制相似问题