2014-05-22 69 views
0

我在想方設法檢測用戶是否在顯示的Outlook應用程序中單擊「發送」。我嘗試閱讀.Display的值,與使用FileDialog應用程序(someInt = .Show)時檢測用戶輸入的方式類似,但無濟於事。我無法在Outmail應用程序中找到任何文檔,因此任何幫助都將不勝感激。用Excel中的VBA Outmail應用程序檢測用戶選擇

Set olApp = CreateObject("Outlook.Application") 
Set Outmail = olApp.CreateItem(olMailItem) 

With Outmail 
    .To = clientEmail 
    .CC = projectManagerEmail 
    .BCC = "" 
    .Subject = projectName & " (PO # " & poNumber & ", Job #" & projectNumber & ") - " & fileType & " (" & fileName & ")" 
    .Attachments.Add ActiveWorkbook.Path & "\" & fileType & "\" & folderName & "\" & fileName & ".pdf" 
    .Display 
    .Save 
End With 

回答

1

我相信你需要攔截發送在Outlook操作。

在Outlook中,轉到VBA編輯器(Alt鍵 - F11),然後在下面粘貼到ThisOutlookSessionMicrosoft Outlook對象

確保您的操作在Outlook中工作,然後關閉Outlook。您可能必須簽署代碼,根據您的環境更改宏安全設置。 的值取消決定用戶是否點擊了發送(例如點擊 - >取消= False)。

由於沒有直接的方法來獲取取消的值,可能是您必須在本地臨時文件夾中創建一個唯一的文本文件,並在Excel中選取它來表示它已發送。

Private Sub Application_ItemSend(ByVal oItem As Object, Cancel As Boolean) 
    ' Add Operations or Sub calls here 
    MyCheck01 oItem, bCancel 
End Sub 

Private Sub MyCheck01(ByVal oItem As Object, Cancel As Boolean) 
    ' Do operations here. If Send is to be aborted, set Cancel to True. 
End Sub 

您還需要定義這個olMailItem在ExcelConst olMailItem = 0)。

+0

感謝您的輸入!經過一番搜索之後,我找到了能夠幫助我的論壇主題(下面的鏈接)。我相信你的解決方案也可以發揮作用,所以我會將它標記爲答案。再次感謝! http://www.mrexcel.com/forum/excel-questions/692890-evaluating-if-outlook-email-displayed-excel-visual-basic-applications-sent-closed.html – user1125879

相關問題