使Word的自动拼写检查获取字典更改

时间:2010-10-21 16:19:52

标签: dictionary ms-word word-vba

在MS Word中,可以将单词添加到自定义词典中,以便识别它们。如果无法识别单词,Word会自动在其下方放置一条红色波浪线。如果将该单词添加到自定义词典,此行将消失。我想做的是通过宏自动执行此过程。似乎必须手动打开字典文件并写入新单词,因为Word Dictionary对象上没有方法可以将单词添加到给定字典中。这没有问题,除了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中复制此行为。我希望红线自动消失,就像你手动添加单词一样。

1 个答案:

答案 0 :(得分:1)

我还没有完全解决问题,但我想我找到了解决方法。您可以使用Range获取代表拼写错误的ActiveDocument.SpellingErrors个对象集合。我将在此集合中搜索与我添加到字典中的单词匹配的文本,然后在对象上设置.NoProofing = True。这似乎使红线消失,并且将新单词添加到字典将阻止它们在下次打开文档时返回。我还没有完全测试过这种方法,但看起来很有希望。

修改 这种方法存在缺陷,因为在同一会话期间输入的单词的其他实例将在其下方具有红色波浪形,因为它们未被明确忽略并且拼写检查尚未使用更新的字典。如果您只是手动拉出自定义词典对话框并单击“确定”,则后台会发生重新读取词典的事情。我只是无法弄清楚如何在代码中执行此操作。