HTMLBody と WordEditor.CheckSpelling はインライン応答でお互いに気に入らないようです
-
22-12-2019 - |
質問
ここで問題が発生します。インライン応答を開いた場合、問題なく編集できます。その後、ワード エディターでスペル チェックを実行すると、電子メールの HMTLBody で編集できなくなります。つまり、次のようなことをすると:
email.HTMLBody = email.HTMLBody.Replace("cat", "dog");
メールの本文は変更されません。ハイライトしたら email
変更が加えられると、HTMLBody には変更が表示されますが、電子メールには表示されません。
さて、最初にすべての編集を行うと、 それから スペルチェックを行うと、間違っているテキストがすべて検査されますが、実際の電子メールのテキストは変更されません。ちなみに、これはメールの本文でのみ発生します。To:、CC:、および Subject: を変更できます。フィールドは何が起こっても大丈夫です。また、インライン応答のみに影響し、独自のインスペクタにポップアウトされる電子メールには影響しません。返信をインラインとして開始してからポップすると、問題は発生しません。
これが私がスペルチェックを行う方法です
Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
何か情報が必要な場合はお知らせください。
編集
そこで、@Dmitry の言ったことをもう少し考えて、戻って、 .WordEditor
メールより。これが結果です。
Word Editor を使用してメール本文をかなりうまく編集できましたが、メール全体の形式が変更され (返信/転送区切り線が削除され)、メール全体が返信の色 (私の場合は青) で色付けされてしまいます。の開始値と終了値を使用することで、これを修正できました。 .Range
次のようにドキュメントを編集します。
Word.Document emailEditor = GetCurrentMailWordEditor(); // A function I use to retrieve the correct editor
Word.Range rng = emailEditor.Range(startIndex, endIndex); // To get only the specific part I want to change
rng.Text = rng.Text.Replace("cat", "dog");
の代わりに
Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");
スペルチェックは、 .WordEditor
次のように正しいソースから:
Word.Document doc;
if(this.Application.ActiveInspector() != null)
{
OutlookInspector insp = this.Application.GetActiveInspector();
doc = insp.WordEditor;
}
else
{
Outlook.Explorer exp = this.Applicaotn.GetActiveExplorer();
doc = exp.ActiveInlineResponseWordEditor;
}
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
解決
Word の Document オブジェクトのインスタンスがすでにある場合は、Word オブジェクト モデルを使用してテキストの置換も行ってみてはいかがでしょうか。