如何从WordEditor对象(在Outlook2010中)获取所选文本并将其复制到另一个窗体

本文关键字:文本 复制 窗体 另一个 获取 对象 WordEditor Outlook2010 | 更新日期: 2023-09-27 18:20:30

当我搜索时,我想将所选文本从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部分的错误(对象引用未设置为对象实例)

如何从WordEditor对象(在Outlook2010中)获取所选文本并将其复制到另一个窗体

您需要从Application对象请求活动检查器。Globals.ThisAddIn.Application.ActiveInspector()将为您提供当前活动的检查器引用,然后您可以请求CurrentItem,并在项目为MailItem类型时将其转换为MailItem引用(也可以是CalendarItem、TaskItem、NoteItem等)。

对于初学者来说,您没有正确使用OutLook.MailItem。。使用这样的东西作为测试,并利用它,根据您的用例进行更改

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

将MailItem对象设置为"objExplorer.Selection[1]as Microsoft.Office.Interop.Outlook.MailItem;",其中objExplore=AddIn名称。Globals.ThisAddIn.Application.ActiveExplorer();