2017-05-21 1 views
0

Excel 셀에서 기존 Outlook 전자 메일에 대한 하이퍼 링크를 만드는 방법을 찾으려고합니다. 사용자는 셀의 링크를 클릭 할 수 있어야하며 (vba 코드의 버튼 일 수도 있음) 참조 된 이메일을 열어야합니다. 나는 pst 파일을 Outlook (?)에서 열어야한다는 것을 알고 있으므로 Outlook이 관련 pst 파일이 이미 열려 있다고 가정 해 봅시다. 검색 할 때 전자 메일을 가져오고, 캡쳐 화면을 저장하는 몇 가지 방법을 찾았지만 클릭 할 수있는 방법으로 전자 메일을 열 수는 없습니다. 이것이 가능하고 google-fu는 약합니까? 모든 도움을 미리 감사드립니다.Excel 내에서 Outlook 전자 메일에 대한 링크 삽입

+0

*를 얻을 것이다 참조 이메일을 열었습니다. * 그 어떤 기준인가? 또한 정적 또는 동적입니까? – Tehscript

+0

Excel 셀의 링크가 특정 전자 메일을 가리키므로 Excel 사용자가 링크를 클릭하여 Outlook에서 해당 전자 메일을 열 수 있습니다. 전자 메일은 pst 파일의 정적 위치에 있습니다. 그 질문에 대한 대답이 확실하지 않습니까? 이 Excel 시트는 수신 한 PO의 공급 업체 확인 전자 메일을 가리키는 데 사용됩니다. – Grymjack

답변

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 

가, 아웃룩이 실행에 열려 있어야합니다. 이 매크로를 버튼으로 설정하고 셀 A1에 키워드 (예 : PO 번호)를 넣어받은 편지함에서 검색 할 수 있습니다. 이 코드를 개선하여 동적으로 서비스를 제공 할 수 있습니다. 내가 그것을 정확하게 이해하면 알려주세요.

+0

감사합니다. 나는 내일 일하러 갈 때 이것을 시도 할 것입니다. – Grymjack

+0

그런데, 아직 도구 모음 -> 참고 문헌에서'Microsoft Outlook 15.0 Object Library' (버전이 바뀔 수도 있음)를 추가해야합니다. 아직 읽지 않은 경우 – Tehscript

+0

예, 전자 메일을 보내려면 vba를 썼습니다. 뛰어나다. – Grymjack

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 
+0

메시지는 일반적으로 확인 폴더로 이동됩니다. 따라서 위치 변경은 문제가되지 않습니다. 불행히도 Citrix 시스템에서 작업 중이며 레지스트리에 액세스 할 수 없기 때문에이 기능이 작동하지 않습니다. – Grymjack

관련 문제