2013-06-24 14 views
5

スペルチェックをMS Word 2010で有効にする必要がありますので、スペルミスの下に赤い下線が表示されるようにしてください。現在のバージョンでMS Wordオートメーション:スペルチェックで赤い下線を有効にできません

私はスペルチェックを有効にするには、このことをしよう:

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

私はWordを開き、「テストtexxt文字列」を入力します。その後、コードは実行されますが、何も起こりません。 No underlines under texxt word

"texxt"の下に下線が表示されません。 enter image description here

を今私は、このプロパティをチェックした場合::私はオプションに行けば、私はオプションが有効になって「入力時にスペルチェック」ことがわかり

wordApplication.ActiveDocument.SpellingErrors[0].Text 
それはスペルがあったことを意味し、「texxt」が含まれます

実際にチェックされた。

はまた、私は単に同じテキストにMS Wordや種類を再起動 - 赤下線が見えるようになる: enter image description here

私はまたApplication.ScreenRefreshを呼び出し、ScreenUpdatingプロパティを設定しようとしたが、これは何の影響も与えていません。

注:文書にテキストがない場合は、このコード/マクロを最初から実行します。いくつかのテキストがある場合 - それは動作します。

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

  1. スタートMS Wordの。オプションに移動し、 "入力時にスペルをチェック"を無効にします。 Wordを再起動します。テキスト以下で

    Options.CheckSpellingAsYouType = true 
    Options.SuggestSpellingCorrections = true 
    ActiveDocument.ShowSpellingErrors = true 
    
  2. タイプ:

  3. Wordを起動し、マクロの次の実行 "テストtexxt文字列を"。 Enterを押します。 (1)の.text

マクロ

のMsgBox ActiveDocument.SpellingErrors次

  • 実行して、あなたは解決策次見つかった事故により、赤い下線

  • +0

    このVBAはありますか? VBAは行の最後にセミコロンを使用せず、最後の行には括弧は含まれません。これらの変更を加えてそれらのコード行を実行すると、texxtに下線が引かれ、スペルチェックダイアログボックスが表示され、変更についての質問が表示されます。コードを実行するとエラーは発生しません。 – Christina

    +0

    これはC#です。しかし、私はVBAにも同じ問題があります。ドキュメントにテキストが含まれている場合にのみ動作しますが、空で、このマクロは最初に実行されます。私はsoemthingを入力し始めます - 私は赤い下線を見ません。 – Oleg

    +0

    私は実際にあなたが得ているものを再現することができないので、答えとして投稿したくありません。しかし、私はあなたのマクロを実行した後にそれを発見したWordはまだ簡単なエラーを自動修正します。 Application.AutoCorrect.ReplaceTextFromSpellingChecker = False という行が追加され、赤い線が表示されました。 – Christina

    答えて

    2

    をメッセージボックスに "texxt" を参照してくださいではなくなります。ユーザーが何らかのテキストを入力した後、次のコードの下線が表示された場合:

    int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count; 
    
    +0

    このソリューションの問題は、新しいテキストが追加された後に毎回このコードを実行する必要があることです。 – Oleg

    0

    Olegの回答には低い担当者からのコメントを残すことはできませんが、Word 2013Application.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; 
    } 
    
    関連する問題