在excel中创建超链接以通过VBA打开特定的电子邮件Outlook

在excel中创建超链接以通过VBA打开特定的电子邮件Outlook,excel,vba,email,hyperlink,outlook,Excel,Vba,Email,Hyperlink,Outlook,我正在Outlook中编写VBA代码,以将所有电子邮件信息跟踪到一个Excel文件。 对于每封电子邮件,我将把信息放在Excel的一行中。我想在Excel文件中添加一个超链接以打开相应的电子邮件 我的代码如下所示: Set objFD = objNS.Folders("dtk142@aaaa.com") Set objToFD = objFD.Folders("Inbox") For Each Msg In objToFD.Items '' mail information

我正在Outlook中编写VBA代码,以将所有电子邮件信息跟踪到一个Excel文件。 对于每封电子邮件,我将把信息放在Excel的一行中。我想在Excel文件中添加一个超链接以打开相应的电子邮件

我的代码如下所示:

Set objFD = objNS.Folders("dtk142@aaaa.com")
Set objToFD = objFD.Folders("Inbox")
For Each Msg In objToFD.Items
        '' mail information
        mDate = Msg.ReceivedTime
        mSubject = Msg.Subject
        mSender = Msg.SenderName
        mSAddress = Msg.SenderEmailAddress

        ' put to excel
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 1).Value = cntID
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 2).Value = mDate
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 3).Value = "Email"
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 5).Value = mSAddress
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 7).Value = user
        xlTmp.Sheets("RequestTracker").Cells(cntrow, 11).Value = mSubject

        '' code to add hyperlink to the email item here

        cntrow = cntrow + 1
        cntID = cntID + 1
    Next
Next

现在我陷入了在excel中创建超链接以打开相应电子邮件的困境。请帮我解决这个问题。谢谢你

简单的超链接不允许在Outlook中打开邮件。相反,您需要处理超链接单击(或按钮),并在Outlook中找到相应的条目。Excel工作簿上显示的属性不允许唯一标识邮件项目。您可以使用该值,但当项目移动到Outlook中的其他存储/文件夹时,该值可能会发生更改。以下是MSDN的声明:

MAPI存储提供程序在其存储中创建项时会分配唯一的ID字符串。因此,在保存或发送Microsoft Outlook项目之前,不会为其设置EntryID属性。当项目移动到另一个存储区时,例如,从收件箱移动到Microsoft Exchange Server公用文件夹,或从一个个人文件夹(.pst)文件移动到另一个.pst文件,EntryID会发生更改。除非不移动项,否则解决方案不应依赖于唯一的EntryID属性

作为一种解决方法,您可以使用自己生成的ID(请参见UserProperties.add)将用户属性添加到Outlook项目中,并将其与其他人类可读属性一起存储在Excel行中


最后,您可能会发现这篇文章很有帮助

我只是通过以下提示了解了如何做到这一点:需要更改注册表项,并通过EntryID向Excel添加超链接。显然,邮件移动时EntryID可能会更改,但我同意。谢谢你的回答。