5

私のコードでは、MS Word 2010 でスペル チェックを有効にして、ユーザーがスペル ミスの下に赤い下線を表示できるようにする必要があります。

現在のバージョンでは、スペル チェックを有効にするためにこれを実行しようとしています。

wordApplication.Options.CheckSpellingAsYouType = true;
wordApplication.Options.SuggestSpellingCorrections = true;
wordApplication.ActiveDocument.ShowSpellingErrors = true;
wordApplication.ActiveDocument.CheckSpelling();

Word を開き、「テスト テキスト文字列」と入力します。この後、コードを実行しますが、何も起こりません: テキスト単語の下に下線はありません

「textxt」の下に下線が表示されません。オプションに移動すると、「入力時にスペルをチェックする」オプションが有効になっていることがわかります。 ここに画像の説明を入力

このプロパティをチェックすると、次のようになります。

wordApplication.ActiveDocument.SpellingErrors[0].Text

スペルが実際にチェックされたことを意味する「textxt」が含まれます。

また、MS Word を再起動して同じテキストを入力すると、赤い下線が表示されます。 ここに画像の説明を入力

また、Application.ScreenRefresh を呼び出して ScreenUpdating プロパティを設定しようとしましたが、効果はありませんでした。

注:ドキュメントにテキストがない場合、最初にこのコード/マクロを実行します。テキストがあれば - それは機能します。

注 2:再現する正確な手順:

  1. MS ワードを起動します。オプションに移動し、「入力時にスペル チェック」を無効にします。ワードを再起動します。

  2. Word を起動し、次のマクロを実行します。

    Options.CheckSpellingAsYouType = true
    Options.SuggestSpellingCorrections = true
    ActiveDocument.ShowSpellingErrors = true
    
  3. 次のテキストを入力します: "Test textxt string.". Enter キーを押します。

  4. 次のマクロを実行

    MsgBox ActiveDocument.SpellingErrors(1).Text

MessageBox に「textxt」が表示されますが、赤い下線は表示されません

4

2 に答える 2

1

担当者が少ないため、オレグの回答にコメントを残すことはできませんが、Word 2013では、メソッドを使用Application.ActiveDocument.SpellingErrors.Countすると、現在の選択が何らかの不可解な理由で削除されているように見え、問題が発生する可能性があることに注意してください。

Countテキストが現在選択されていないときにのみチェックすることで、この効果を非表示にするハック。例えば:

// "document" is a Microsoft.Office.Tools.Word.Document
var selected = document.Application.Selection.Range;
if(Math.Abs(selected.End - selected.Start) == 0)
{
    var count = document.Application.ActiveDocument.SpellingErrors.Count;
}
于 2014-11-10T22:51:37.550 に答える