2010-10-21 53 views
0

在MS Word中,可以將詞語添加到自定義詞典中,以便識別它們。如果某個單詞無法識別,Word會自動在其下方放置一條紅色波浪線。如果您將該單詞添加到自定義詞典中,則此行會消失。我想要做的是通過宏自動執行此過程。看來,必須手動打開字典文件並寫入新單詞,因爲Word Dictionary對象上沒有方法將單詞添加到給定字典。這不是問題,除了Word不會自動選取新單詞並刪除新添加單詞下方的紅色波浪線。我甚至嘗試清除自定義字典並將它們添加回去,但似乎無法重新加載字典,直到您手動運行拼寫檢查爲止。此示例代碼如下:讓Word的自動拼寫檢查選取字典更改

Dim x As Dictionary 
Dim fname As String 

fname = "C:\Users\me\AppData\Roaming\Microsoft\UProof\md.dic" 

' code to add word to dictionary goes here 

With CustomDictionaries 
    .ClearAll 
    .Add fname 
    .ActiveCustomDictionary = CustomDictionaries.Item(fname) 

End With 

有什麼辦法使Word識別自定義詞典新添加的字或詞,但不運行交互式拼寫檢查?如果您手動添加單詞,它會靜靜地執行此操作,但似乎無法在VBA中複製此行爲。我希望紅線自動消失,就像手動添加文字時一樣。

+3

請參閱此主題:http://stackoverflow.com/questions/3389314/recheck-document-for-spellings-not-same-as-vba-code – 2010-10-21 19:08:36

回答

1

我並沒有完全解決這個問題,但我想我找到了解決辦法。您可以使用ActiveDocument.SpellingErrors獲得代表拼寫錯誤的Range對象集合。我要搜索這個集合中與添加到字典中的單詞相匹配的文本,然後在該對象上設置.NoProofing = True。這似乎會使紅線消失,並且將新單詞添加到字典中可以防止他們在我下次打開文檔時回來。我還沒有完全測試這種方法,但它看起來很有希望。

編輯 這種方法是有缺陷的,因爲這是因爲他們沒有被明確忽視同一會議將它們下方的紅色squigglies過程中輸入的字和拼寫檢查的其他實例尚未使用更新的字典。如果您只是手動拉起自定義詞典對話框並單擊確定,則會在後臺發生重新閱讀詞典的操作。我只是無法弄清楚如何在代碼中做到這一點。