2

我想在搜索时将选定的文本从 WordEditor(Outlook 电子邮件正文)复制到另一个表单,我发现使用Microsoft.Office.Interop.Word.Document复制到新 Word 文档的那部分代码

Outlook.MailItem mailItem;
Outlook.Inspector inspector = mailItem.GetInspector;

// Obtain the Word.Document object from the Inspector object
Word.Document document = (Word.Document)inspector.WordEditor;

// Copy the selected objects
document.Application.Selection.Copy();

我总是收到 mailItem.GetInspector 部分的错误(对象引用未设置为对象实例)

4

3 回答 3

3

您需要从Application对象请求活动检查器。Globals.ThisAddIn.Application.ActiveInspector()将为您提供当前活动的检查器参考,如果项目是类型(也可以是 CalendarItem、TaskItem、NoteItem 等) ,您可以请求CurrentItem并转换为参考。MailItemMailItem

于 2012-01-17T20:25:37.677 回答
2

对于初学者,您没有正确使用 OutLook.MailItem.. 使用类似这样的东西作为测试并利用它并根据您认为合适的方式进行更改以适合您的 UseCase

public void ShowEmail(string To, string Subject, string Body)
{
    Outlook.Application myOutlook = new Outlook.Application();
    Outlook.NameSpace myNamespace = myOutlook.GetNamespace("MAPI");
    myNamespace.Logon(null, null, null, null);
    Outlook.MAPIFolder outbox = myNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox);
    Outlook.MailItem mail = (Outlook.MailItem)outbox.Items.Add(Outlook.OlItemType.olMailItem);

    mail.Recipients.Add(To);
    mail.Subject = Subject;
    mail.Body = Body;

    mail.GetInspector.Activate();
}

Go ahead and test it, create a button on your form and in the Click event handler:

private void button1_Click(object sender, EventArgs e)
{
    ShowEmail("youremailOutlookAddress.com", "Hello!", "Hey here's a test Email!");
}

OutLookMailItem如何使用 Outlook

于 2012-01-17T20:22:23.357 回答
0

将 MailItem 对象设置为“objExplorer.Selection[1] as Microsoft.Office.Interop.Outlook.MailItem;” 其中 objExplorer = AddIn name.Globals.ThisAddIn.Application.ActiveExplorer();

于 2012-02-22T07:02:36.830 回答