0

ここで問題です。インライン応答が開かれると、問題なく編集できます。次に、ワード エディターでスペル チェックを実行すると、メールの 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てメールからの使用に取り組むことにしました。これが結果です。

ワード エディターを使用してメール本文をかなりうまく編集できましたが、メール全体を再フォーマットし (返信/転送の区切り線を削除)、返信の色 (私にとっては青) でメール全体に色を付けてしまいます。.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();
}
4

1 に答える 1

1

Word の Document オブジェクトのインスタンスが既にある場合は、Word オブジェクト モデルも使用してテキストを置換してみませんか?

于 2014-07-31T16:42:36.787 に答える