2010-08-02 60 views
3

我想在添加字典后重新检查文档中的拼写。问题是,下面的代码(主要是从宏观录像机)重新检查拼写文档与VBA代码不一样

CustomDictionaries.Add FileName:="c:\test_dictionary.dic" 

Application.ResetIgnoreAll 
ActiveDocument.Range.SpellingChecked = False 
ActiveDocument.Range.GrammarChecked = False 

不会产生相同的结果从Word 2007中的Word选项|校对|重新检查文档按钮。该按钮会重新检查文档,您可以看到新添加的单词被拼写为拼写错误。该代码没有任何明显的影响。

我在忽略什么?

回答

1

这是Word工作的方式。添加一个CustomDictionary不会触发它被立即使用,只有几种方法来触发它。其中之一是校对话框(即您不必点击“重新检查文档”,您只需点击“确定”,它会重新检查)。另一个触发器是手动键入文本,然后是分隔符(如空格或段落)。另一个触发器是拼写检查对话框。不幸的是,我看不出有什么好的选择。

但是,这是一个糟糕的选择,我没有尝试过。 (注意:SendKeys在Vista/7上无法正常工作,那里有replacement)。添加自定义字典后,调出校对话框,然后以编程方式单击确定。再次,我还没有尝试过,所以我不确定这是否会产生预期的结果。

+0

@Otaku。谢谢。但是,CheckSpelling调用显示拼写和语法对话框。我只想重新检查文档中的拼写,并且有一些单词先前拼错了。 – ForEachLoop 2010-08-02 16:22:24

+0

@ForEachLoop:找到了。您是否尝试删除“ActiveDocument.CheckSpelling CustomDictionary:= dic'这一行?这应该在没有对话的情况下重新启用红色曲线。 – 2010-08-02 18:42:37

+0

@Otaku。测试:使用至少“asdf”创建c:\ TestDictionary.dic。然后从一个文档运行此: 公用Sub CreateDictionaryTest() 昏暗currentDocument正如文献 集currentDocument = 的ActiveDocument currentDocument.Range.InsertAfter “当在ASDF事件kourse”。 currentDocument.Range.InsertParagraphAfter 昏暗myDictionary作为字典 集myDictionary = CustomDictionaries.Add(文件名:= “C:\ TestDictionary.dic”) ActiveDocument.SpellingChecked =假 结束子 我假定此代码应与重新检查文档按钮具有相同的效果。 – ForEachLoop 2010-08-03 20:25:22

1

我不得不做同样的事情的一个项目,在此解决方法做这一点对我来说:

'spellcheck the document 
ActiveDocument.Range.LanguageID = wdFrenchHaiti 
ActiveDocument.Range.LanguageID = wdEnglishUS 

当您更改语言时,Word重新检查拼写错误的范围内。