Frage

Hier liegt also das Problem.Wenn eine Inline-Antwort geöffnet wird, kann ich sie problemlos bearbeiten.Wenn ich dann die Rechtschreibprüfung über den Texteditor durchführe, verliere ich die Möglichkeit, die E-Mail über den HMTLBody zu bearbeiten.Damit meine ich, wenn ich so etwas mache:

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

Der Text in der E-Mail wird dadurch nicht geändert.Wenn ich hervorhebe email Nachdem die Änderungen vorgenommen wurden, zeigt der HTMLBody die Änderungen an, sie werden jedoch nicht in der E-Mail angezeigt.

Nun, wenn ich zuerst die gesamte Bearbeitung mache und Dann Führen Sie die Rechtschreibprüfung durch. Dabei wird der gesamte falsche Text durchsucht, der eigentliche E-Mail-Text wird jedoch nicht geändert.Dies geschieht übrigens nur für den E-Mail-Text.Ich kann An:, CC: und Betreff ändern:Felder ganz gut, egal was passiert.Es wirkt sich auch nur auf die Inline-Antworten aus und nicht auf E-Mails, die im eigenen Inspektor angezeigt werden.Ich kann eine Antwort als Inline-Antwort starten und sie dann einfügen, ohne dass das Problem auftritt.

Auf diese Weise mache ich die Rechtschreibprüfung

Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
    doc.CheckSpelling();
    email.Save();
}

Wenn Sie Informationen benötigen, lassen Sie es mich wissen.

BEARBEITEN

Nachdem ich etwas mehr darüber nachgedacht hatte, was @Dmitry gesagt hatte, beschloss ich, zurückzugehen und an der Verwendung des zu arbeiten .WordEditor aus der E-Mail.Das sind die Ergebnisse.

Ich konnte den E-Mail-Text ziemlich gut mit dem Texteditor bearbeiten, aber dadurch wurde die gesamte E-Mail neu formatiert (Trennlinien für Antwort/Weiterleitung entfernt) und die gesamte E-Mail in der Antwortfarbe (bei mir blau) eingefärbt.Ich konnte dies beheben, indem ich den Start- und Endwert im verwendet habe .Range des Dokuments etwa so:

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");

anstatt

Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");

Die Rechtschreibprüfung konnte ich beheben, indem ich das bekam .WordEditor aus der richtigen Quelle wie folgt:

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();
}
War es hilfreich?

Lösung

Wenn Sie bereits über eine Instanz des Word-Dokumentobjekts verfügen, warum führen Sie die Textersetzung nicht auch mithilfe des Word-Objektmodells durch?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top