Pergunta

Então aqui está o problema.Quando uma linha de resposta é aberto eu sou capaz de editá-lo sem qualquer problema.Então, quando eu executar a verificação ortográfica através do editor de texto, eu perder a capacidade de editar através do HMTLBody de e-mail.Por isso, quero dizer que se eu fizer algo parecido com isto:

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

isso não vai mudar o corpo no e-mail.Se eu destaque email depois de feitas as alterações, o HTMLBody vai mostrar as alterações, mas ele não vai aparecer no e-mail.

Agora, se eu fizer tudo da edição de primeiro e em seguida, fazer a verificação ortográfica, ele vai passar por todo o texto que é errado, mas não vai alterar o texto de e-mail.Isso só acontece para o corpo do e-mail pelo caminho.Posso alterar Para:, CC: e Assunto:campos de multa não importa o que aconteça.Ele também afeta apenas a linha respostas e não de qualquer e-mail que bateu para fora em seu próprio inspetor.Eu posso iniciar uma resposta de uma linha e, em seguida, o pop e o problema não ocorrerá.

Esta é a maneira que eu estou fazendo a verificação ortográfica

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

Se você precisar de qualquer informação me avise.

EDITAR

Então, colocando um pouco mais de pensamento sobre o que o @Dmitry disse, decidi voltar e trabalhar usando o .WordEditor no e-mail.Este são os resultados.

Eu era capaz de editar o corpo do email muito bem usando o editor de texto, mas seria reformatar o e-mail completo (remover responder/reencaminhar linhas de separação) e a cor de todo o e-mail com a resposta de cor (azul para mim).Eu era capaz de corrigir isso com o usando o valor de início e término do .Range do documento, como por exemplo:

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

em vez de

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

A verificação ortográfica eu era capaz de corrigir, obtendo o .WordEditor a partir de que a origem correta assim:

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();
}
Foi útil?

Solução

Se você já tiver uma instância do objeto de Documento do Word, por que não fazer a substituição de texto usando o Modelo de Objeto do Word como assim?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top