Word VBA访问自定义词典的内容

时间:2008-11-17 03:18:59

标签: ms-word word-vba

我需要检查Word文档中的各种代码。

这些代码通常是一个字母后跟一个连字符和5位数字,例如M-81406。

我们需要检查这些预定义的代码是否已正确输入(有几千个代码的预定列表)。 我们不能使用普通的单词拼写检查,因为你不能拼错一个数字(你需要至少2个字母)。

我想我可以写VBA代码找到任何可能无效的代码。我可以使用正则表达式来检查它们。

我能从VBA访问自定义词典的内容吗?

我需要一个易于客户更新的解决方案。

奖励指向任何暗示突出显示错误代码的聪明方法的人。

1 个答案:

答案 0 :(得分:1)

您可能知道,自定义词典只是包含单词的文本文件,因此请参考Microsoft Scripting Runtime,并使用:

Dim FSO As New FileSystemObject, FS As TextStream
Dim Code As String, Codes As New Scripting.Dictionary
Dim Paragraph As Paragraph, Word As Range

Set FS = FSO.OpenTextFile("c:\...\cust.dic")

Do Until FS.AtEndOfStream
    Code = FS.ReadLine
    If Not Codes.Exists(Code) Then Codes.Add Key:=Code, Item:=Nothing
Loop

' Use your own method for enumerating words
For Each Paragraph In ActiveDocument.Paragraphs
    Set Word = Paragraph.Range
    Word.MoveEnd WdUnits.wdCharacter, -1

    If Not Codes.Exists(Word.Text) Then
        Word.Font.Underline = wdUnderlineWavy
        Word.Font.UnderlineColor = wdColorBlue
    Else
        Word.Font.Underline = wdUnderlineNone
        Word.Font.UnderlineColor = wdColorAutomatic
    End If
Next

不理想,因为它破坏了格式化,并且没有提供建议机制(尽管围绕列表框构建的小形式就足够了)。

不幸的是,最好的解决方案是扩展拼写引擎。