2010-08-02 30 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重新檢查拼寫錯誤的範圍內。