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

在Excel中插入指向Outlook电子邮件的链接,excel,vba,email,hyperlink,outlook,Excel,Vba,Email,Hyperlink,Outlook,我正在尝试在Excel单元格中创建指向现有Outlook电子邮件的超链接 用户应该能够点击单元格中的链接,也可以是带有VBA代码的按钮来打开电子邮件 我知道必须在Outlook中打开pst文件,因此假设Outlook正在运行,并且相关的pst文件已经打开 我找不到任何可点击的方式来打开电子邮件。我不太确定我是否理解全部内容,但您可以尝试以下方法: Sub OpenMessage() Dim wb As Workbook, ws As Worksheet Dim mailOL As

我正在尝试在Excel单元格中创建指向现有Outlook电子邮件的超链接

用户应该能够点击单元格中的链接,也可以是带有VBA代码的按钮来打开电子邮件

我知道必须在Outlook中打开pst文件,因此假设Outlook正在运行,并且相关的pst文件已经打开


我找不到任何可点击的方式来打开电子邮件。

我不太确定我是否理解全部内容,但您可以尝试以下方法:

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编号)在收件箱中搜索。您可以改进此代码以动态地为您服务。如果我理解正确,请告诉我。

您需要启用Outlook://协议。Microsoft仅在Outlook应用程序中提供此协议的默认支持。请参见

但是,您可以为计算机中的其他应用手动执行此操作。您需要通过向注册表添加以下项来编辑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

并打开引用的电子邮件。那是什么参照物?它是静态的还是动态的?Excel单元格中的链接将指向特定的电子邮件,以便Excel用户可以单击该链接并在Outlook中打开该电子邮件。电子邮件将在pst文件中处于静态位置。我不确定这是否回答了你的问题?此Excel表格将用于指向他们收到的采购订单的供应商确认电子邮件。谢谢。我明天回去工作时会尝试一下。顺便说一句,你需要添加Microsoft Outlook 15.0对象库版本,可能会从工具->引用更改。如果你还没有准备好,在我编写一些vba从Excel启动电子邮件时,该引用已启用。邮件通常会移动到确认文件夹中。因此,改变立场不应该成为问题。不幸的是,这对我不起作用,因为我正在使用Citrix系统,并且没有注册表访问权限。