Visual Basi c для кода MS Word не работает для японского языка - PullRequest
0 голосов
/ 18 апреля 2020

Я использую следующий код VB (автор macropod, см. этот вопрос о стековом потоке ) внутри MS Word (Word для Ma c v16.16.21), чтобы отмечать ошибки и вставлять первую проверку орфографии предложение внутри документа:

Sub SpellCheck()
Dim Rng As Range, oSuggestions As Variant
For Each Rng In ActiveDocument.Range.SpellingErrors
  With Rng
    If .GetSpellingSuggestions.Count > 0 Then
      Set oSuggestions = .GetSpellingSuggestions
      .Text = "[" & .Text & "][" & oSuggestions(1) & "]"
    Else
      .Text = "[" & .Text & "][]"
  End If
  End With
Next
End Sub

Для текста на английском языке sh работает нормально: This is some very important dokument становится This is some very important [dokument][document].

Но для японского это не работает: в следующем В предложении それからバートわチャーリイこのかーどになにが見えるかといった。 есть две ошибки, макрос ничего не делает (хотя Word визуально отмечает ошибки, что означает, что внутренняя проверка орфографии знает об ошибках: enter image description here

Что я делаю неправильно? Отличаются ли команды basi c для японского языка? Как мне изменить скрипт, чтобы получить ожидаемый результат?

1 Ответ

0 голосов
/ 19 апреля 2020

По крайней мере одна из ошибок выглядит как GrammaticError, а не как SpellingError.

Вы можете циклически проходить через GrammaticErrors аналогично тому, как вы уже использовали код, но нет эквивалента Метод GetSpellingErrors.

например, вы можете сделать

For Each Rng in ActiveDocument.Range.GrammaticalErrors
  ' Each GrammaticalError is just a Word Range, 
  ' It is not obvious exactly what the range "covers". Judging from your example
  ' the range "covers" the sentence.
  ' So do whatever you need here. This example just highlights each Rng
  Rng.HighlightColorIndex = wdYellow
End

В объектной модели Word есть только два типа ProofreadingError - wdGrammaticError и wdSpellingError.

...