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