Сделайте, чтобы Word автоматически проверял орфографию - PullRequest
0 голосов
/ 21 октября 2010

В 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 Ответ

1 голос
/ 21 октября 2010

Я точно не решил проблему, но думаю, что нашел способ обойти.Вы можете получить коллекцию Range объектов, которые представляют орфографические ошибки, используя ActiveDocument.SpellingErrors.Я собираюсь найти в этой коллекции текст, соответствующий слову, которое я добавил в словарь, а затем установить .NoProofing = True для объекта.Это, кажется, заставляет красные линии исчезать, и добавление нового слова в словарь предотвратит их возвращение при следующем открытии документа.Я не полностью протестировал этот подход, но он выглядит многообещающе.

РЕДАКТИРОВАТЬ Этот подход некорректен, так как дополнительные экземпляры слова, которые вводятся в течение того же сеанса, будут иметь красные кривыепод ними, потому что они не были явно проигнорированы, и проверка орфографии еще не использует обновленный словарь.Если вы просто откроете диалоговое окно пользовательского словаря вручную и нажмете ОК, в фоновом режиме что-то произойдет, чтобы перечитать словарь.Я просто не могу понять, как это сделать в коде.

...