Word VBA для доступа к содержимому пользовательского словаря - PullRequest
1 голос
/ 17 ноября 2008

Мне нужно проверить различные коды в документе Word.

Эти коды обычно представляют собой букву, за которой следуют дефис и 5 цифр, например, M-81406.

Нам необходимо убедиться, что эти предварительно определенные коды были введены правильно (существует заранее определенный список из нескольких тысяч кодов). Мы не можем использовать обычную проверку орфографии в Word, так как вы не можете ввести число с орфографической ошибкой (вам нужно как минимум 2 буквы).

Я подумал, что мог бы написать код VBA, который найдет любой, который может быть недействительным. Я могу использовать регулярные выражения, чтобы проверить их.

Могу ли я получить доступ к содержимому пользовательского словаря из VBA?

Мне нужно решение, которое клиент может легко обновить.

Бонус указывает на любого, кто предлагает умный способ выделения неправильных кодов.

1 Ответ

1 голос
/ 17 ноября 2008

Пользовательский словарь, как вы, вероятно, знаете, это просто текстовый файл, содержащий слова, поэтому обратитесь к 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

Не идеально, потому что это излишне подчеркивает форматирование и не предоставляет механизм для предложений (хотя небольшой формы, построенной вокруг списка, будет достаточно).

Наилучшее решение, к сожалению, - расширение механизма орфографии.

...