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

时间:2017-05-21 12:11:01

标签: excel vba email hyperlink outlook

我正在尝试找到一种在Excel单元格中创建超链接到现有Outlook电子邮件的方法。用户应该能够单击单元格中的链接(也可以是带有vba代码的按钮)并打开引用的电子邮件。我知道必须在Outlook(?)中打开pst文件,所以让我们假设Outlook正在运行,相关的pst文件已经打开。在搜索中,我找到了一些导入电子邮件的方法,保存了电子邮件的屏幕截图,但没有提供可点击的方式来打开电子邮件。这可能吗,我的谷歌弱吗?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我不太确定我理解整件事情,但您可以尝试以下方法:

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应该开放运行它。您可以将此宏设置为按钮,并在单元格A1中输入关键字(例如PO编号)以在收件箱中进行搜索。您可以改进此代码以动态为您服务。如果我理解正确,请告诉我。

答案 1 :(得分:0)

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

但是,您可以手动为计算机中的其他应用执行此操作。您需要通过将以下条目添加到注册表来编辑Windows注册表:

[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