Vba 制作单词';s自动拼写检查提取字典更改

Vba 制作单词';s自动拼写检查提取字典更改,vba,dictionary,ms-word,Vba,Dictionary,Ms Word,在MS Word中,可以将单词添加到自定义词典中,以便识别它们。若一个单词并没有被识别,那个么这个单词会自动在下面画一条红色的曲线。如果将该单词添加到自定义词典中,此行将消失。我想做的是通过宏自动执行这个过程。似乎必须手动打开字典文件并编写新词,因为word dictionary对象上没有向给定字典添加单词的方法。这没有问题,只是Word不会自动拾取新单词并删除新添加单词下面的红色曲线。我甚至尝试过清除自定义词典并将它们添加回,但在手动运行拼写检查之前,似乎无法重新加载词典。此示例代码如下所示:

在MS 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中复制此行为。我希望红线自动消失,就像手动添加单词一样。

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

编辑 这种方法是有缺陷的,因为在同一会话中输入的单词的其他实例下面会有红色的波形,因为它们没有被明确忽略,拼写检查也没有使用更新的词典。如果您只是手动调出“自定义词典”对话框并单击“确定”,则后台会发生一些事情来重新读取词典。我就是不知道如何在代码中实现这一点。

请参阅以下线程: