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의 Document 개체 인스턴스가 이미 있는 경우 Word 개체 모델을 사용하여 텍스트를 바꾸는 것도 어떻습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top