2010-10-21 92 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过程中输入的字和拼写检查的其他实例尚未使用更新的字典。如果您只是手动拉起自定义词典对话框并单击确定,则会在后台发生重新阅读词典的操作。我只是无法弄清楚如何在代码中做到这一点。