HTMLBody и WordEditor.CheckSpelling, похоже, не нравятся друг другу во встроенном ответе

StackOverflow https://stackoverflow.com//questions/25063598

Вопрос

Так вот в чем проблема.Когда открывается встроенный ответ, я могу без проблем отредактировать его.Затем, когда я запускаю проверку орфографии через текстовый редактор, я теряю возможность редактировать через HMTLBody электронного письма.Под этим я имею в виду, что если я сделаю что-то вроде этого:

email.HTMLBody = email.HTMLBody.Replace("cat", "dog");

тело письма не изменится.Если я выделю email после внесения изменений HTMLBody отобразит изменения, но не отобразится в электронном письме.

Теперь, если я сначала сделаю все редактирование и затем выполните проверку орфографии, она пропустит весь неправильный текст, но не изменит фактический текст электронного письма.Кстати, это происходит только для тела электронного письма.Я могу изменить Кому:, Копию: и Тему:поля просто в порядке, неважно, что происходит.Это также влияет только на встроенные ответы, а не на любое электронное письмо, отображаемое в собственном инспекторе.Я могу начать ответ как встроенный, а затем вставить его, и проблемы не возникнет.

Вот так я проверяю орфографию

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();
}
Это было полезно?

Решение

Если у вас уже есть экземпляр объекта «Документ» Word, почему бы не выполнить замену текста также с использованием объектной модели Word?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top