Domanda

Quindi ecco il problema. Quando viene aperta una risposta in linea, sono in grado di modificarlo senza alcun problema. Quindi, quando eseguo il controllo ortografico attraverso il word redattore, perdo la capacità di modificare attraverso l'hmtlbody dell'email. Con ciò intendo che se faccio qualcosa del genere:

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

Non cambierà il corpo nell'e-mail. Se ho evidenziato email dopo che le modifiche vengono effettuate, il corpo html mostrerà le modifiche, ma non verrà visualizzato nell'e-mail.

Ora, se faccio tutto il montaggio prima e allora fai il controllo ortografico, passerà attraverso tutto il testo che è sbagliato, ma non cambierà il testo e-mail effettivo. Questo succede solo per il corpo della posta elettronica a proposito. Posso modificare il:, cc:, e soggetto: i campi sono andati bene non importa cosa succede. Inoltre colpisce solo le risposte in linea e non qualsiasi e-mail che è spuntata nel suo ispettore. Posso iniziare una risposta come un inline e poi pop e il problema non si verificherà.

Questo è il modo in cui sto facendo il controllo ortografico

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

Se hai bisogno di informazioni fammelo sapere.

Modifica

Quindi, mettendo un po 'più pensato a ciò che @dmitry ha detto, ho deciso di tornare indietro e lavorare sull'uso del .WordEditor dall'e-mail. Questo sono i risultati.

Sono stato in grado di modificare il corpo e-mail abbastanza bene usando il word redattore, ma riformerebbe l'intera email (rimuovere le linee di separazione di risposta / avanti) e colorano l'intera email con il colore di risposta (blu per me). Sono stato in grado di risolvere questo con il valore di inizio e fine nel .Range del documento come:

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

invece di

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

Il controllo ortografico che sono stato in grado di risolvere ottenendo il .WordEditor dalla sorgente corretta come:

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();
}
.

È stato utile?

Soluzione

Se si dispone già di un'istanza dell'oggetto documento della parola, perché non eseguire anche la sostituzione del testo utilizzando anche il modello di oggetto Word?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top