Ошибка операции при получении инспектора. WordEditor как Word.Document в Outlook 365 VSTO C# - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь ввести некоторый предопределенный текст в новое электронное письмо в Outlook 365, используя VSTO C#. Я написал этот базовый c код:

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector +=
        new Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
    }


    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
    {

        try
        {
            if (this.Application.ActiveExplorer().Selection.Count > 0)
            {
                if (Inspector.CurrentItem is Outlook.MailItem)
                {
                    Word.Document wordDocument = Inspector.WordEditor as Word.Document;
                    Word.Range wordRange = wordDocument.Range(0, 0);
                    wordRange.Text = "Text";

                }
            }
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

Во время отладки, в строке: Word.Document wordDocument = Inspector.WordEditor as Word.Document; Я получаю сообщение об ошибке «Операция не удалась».

Exception details

Я проверил Inspector.WordEditor, используя шпион Outlook, и он также содержит данные.

Outlook Spy data

То же выражение работает правильно, когда я создаю mailitem самостоятельно, используя:

Outlook.MailItem mailItem = (new Outlook.Application()).CreateItem(Outlook.OlItemType.olMailItem);

Я много раз искал по inte rnet, но ничего не нашло чего-то подходящего для моего случая.

Я хочу знать, почему это происходит, и как я могу это решить. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 29 апреля 2020

Инспектор может еще не инициализироваться ко времени вызова обработчика NewInspector. Попробуйте подождать, пока событие Inspector.Activate не сработает в первый раз (оно может запускаться несколько раз).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...