在Excel中插入指向Outlook电子邮件的链接

我试图find一种方法来创buildExcel单元格中的超链接到现有的Outlook电子邮件。 用户应该能够点击单元格中的链接(也可以是带有vba代码的button),并打开引用的电子邮件。 我知道必须在Outlook(?)内打开pst文件,因此我们假设Outlook正在运行,相关的pst文件已经打开。 在search中,我find了一些导入电子邮件的方法,保存电子邮件的截图,但没有提供可点击的方式来打开电子邮件。 这是可能的,我的谷歌软弱? 在此先感谢您的帮助。

我不太确定我是否了解整个事情,但是您可以尝试以下方法:

Sub OpenMessage() Dim wb As Workbook, ws As Worksheet Dim mailOL As Outlook.Application, mailItems As Outlook.Items Dim mailFolder As Outlook.MAPIFolder, mail As Object Set wb = ActiveWorkbook Set ws = Sheets("Sheet1") Set mailOL = Outlook.Application Set mailFolder = mailOL.ActiveExplorer.CurrentFolder Set mailItems = mailFolder.Items For Each mail In mailItems 'search Cell A1 value among email subjects If InStr(mail.Subject, ws.Range("A1").Value) > 0 Then mail.Display 'if found display the email message End If Next Set wb = Nothing: Set ws = Nothing Set mail = Nothing: Set mailItems = Nothing Set mailFolder = Nothing: Set mailOL = Nothing End Sub 

正如你所说,Outlook应该打开运行这个。 您可以将此macros设置为一个button,并在您的收件箱中search单元格A1中的关键字(例如采购订单编号)。 您可以改进此代码以dynamic地为您提供服务。 让我知道如果我理解正确。

您需要启用Outlook://协议。 Microsoft现在只在Outlook应用程序中为此协议提供默认支持(请参阅https://support.microsoft.com/zh-cn/help/929590/known-issues-when-you-develop-custom-solutions-for-office-outlook-2007

但是,您可以手动为计算机中的其他应用程序执行此操作。 您需要通过将下列项添加到registry来编辑Windowsregistry:

 [HKEY_CLASSES_ROOT\outlook] "URL Protocol"="" @="URL:Outlook Folders" [HKEY_CLASSES_ROOT\outlook\DefaultIcon] @="C:\\Program Files\\Microsoft Office\\Office15\\1033\\OUTLLIB.DLL,-9403" [HKEY_CLASSES_ROOT\outlook\shell] @="open" [HKEY_CLASSES_ROOT\outlook\shell\open] @="" [HKEY_CLASSES_ROOT\outlook\shell\open\command] @="\"C:\\Program Files\\Microsoft Office\\Office15\\OUTLOOK.EXE\" /select \"%1\"" 

你已经完成了这个,你需要获得单个消息的消息ID。

以下代码将获得消息ID

 Sub GetOutlookMessageLinkID() 'This procedue returns the outlook message ID for a the currenlty open outlook message. 'Caveat: this message ID will be invalid if the message is moved to a differnt forldder. Dim myolApp Dim linkToMsg As String Set myolApp = CreateObject("Outlook.Application") linkToMsg = "Outlook:" & myolApp.ActiveInspector.CurrentItem.EntryID 'linkToMsg now has the hyper link. you can use this as a clickable link to access the message 'Enable the "Outlook:" protocol on your machine End Sub