2012-02-16 8 views
1

英語ではないテキストを自動的に修正しようとしていますが、問題はSpellCheck関数を使用して「スペルと文章校正」ダイアログボックスのポップアップを表示し、ユーザーの入力を待つことです私はテキストを自動的に修正したい。だから私の質問はどのように私はこれを解決するのですか?AutoCorrect Text C#Word

using System.Collections.Generic; 
using Microsoft.Office.Interop.Word; 
using Word = Microsoft.Office.Interop.Word; 
using TobyCL.ro.toby.StringOperations; 
namespace namespace.ro.toby 
{ 
    class WordProofing:IProof 
    { 
     private readonly Word.Application _wordApp; 
     private readonly Word.Document _wordDoc; 
     private static object _oEndOfDoc = "\\endofdoc"; 
     public WordProofing() 
     { 

      _wordApp = new Word.Application {Visible = false}; 
      _wordDoc = _wordApp.Documents.Add(); 
     } 
     public void Close() 
     { 
      object obj = Word.WdSaveOptions.wdDoNotSaveChanges; 
      _wordDoc.Close(ref obj); 
      _wordApp.Quit(ref obj); 
     } 
     #region Implementation of IProof 

     public string Proof(string proofText) 
     { 
      Range wRng = _wordDoc.Bookmarks.get_Item(ref _oEndOfDoc).Range; 
      wRng.Text = proofText; 
      _wordDoc.CheckSpelling(IgnoreUppercase: true,AlwaysSuggest:false); 
      string str = wRng.Text; 
      wRng.Text = ""; 
      return str; 
     } 
     #endregion 
    } 
} 

私は数日前にこのコードを書きました。問題は、いくつかのテストを実行するためのプルーフィングツールをアンインストールすることです。そのダイアログが表示され続けているので、私はいくつかのWordの設定をしなければならないか、どんな助けでも大歓迎です。

私はMicrosoft Office Word 2010を使用しています

答えて

2

これは私がそれを解決する方法ですが、それは本当に多くの時間がかかるので、改善や新しいアイデアを歓迎します。

using Microsoft.Office.Interop.Word; 
    class WordProofing 
    { 
     private Application _wordApp; 
     private readonly Document _wordDoc; 
     private static object _oEndOfDoc = "\\endofdoc"; 
     public WordProofing() 
     { 

      _wordApp = new Application { Visible = false }; 
      _wordDoc = _wordApp.Documents.Add(); 
     } 
     public void Close() 
     { 
      _wordDoc.Close(WdSaveOptions.wdDoNotSaveChanges); 
      _wordApp.Quit(); 
     } 

     public string Proof(string proofText) 
     { 
      Range wRng = _wordDoc.Bookmarks.get_Item(ref _oEndOfDoc).Range; 
      wRng.Text = proofText; 
      ProofreadingErrors spellingErros = wRng.SpellingErrors; 
      foreach (Range spellingError in spellingErros) 
      { 
       SpellingSuggestions spellingSuggestions = 
        _wordApp.GetSpellingSuggestions(spellingError.Text,IgnoreUppercase:true); 

       foreach (SpellingSuggestion spellingSuggestion in spellingSuggestions) 
       { 
        spellingError.Text = spellingSuggestion.Name; 
        break; 
       } 
      } 

      string str = wRng.Text; 
      wRng.Text = ""; 
      return str; 
     } 
    } 
0

使用しているMS Wordのバージョンはどれですか?

デフォルトでは、スペルチェッカーがダイアログボックスを表示します。ダイアログボックスを無効にするには、私が知っている2つの方法があります。

1)コードを使用して、自動修正の最初のオプションを自動的に選択します。

それはこの

AutoCorrect.Entries.Add Name:="AdSAD", Value:="Assad" 

2)またはメニューオプションを使用するようなものです。このリンクを参照してください。

トピックメイン辞書

リンクからの言葉で、自動的に正しいスペル:http://office.microsoft.com/en-us/word-help/automatically-correct-spelling-with-words-from-the-main-dictionary-HA010174790.aspx

これはあなたが望むものではないなら、私が知っているのですか?

+0

メニューオプションは既に設定されていますが、最初のオプションについては、私はそれほど気にしません。私は自分のワードナイトで提供されている提案を使用することに興味があります。 – trebor