2016-08-19 68 views
1

我想從Excel工作簿中調用存儲在Outlook「ThisOutlookSession」中的過程。不幸的是,較新的Outlook 2010應用程序與MS Office產品之間的application.run *SubName*不兼容。檢測何時創建了新電子郵件(WithEvents)

由於需要有人工作站的'.send'上的安全信息,不能完成代表Outlook發送電子郵件的Excel腳本。 (&無法改變從公司策略的安全設置)

當前的工作流程...

- 用戶給我發電子郵件與「命令」的主題&附件

- 活動監聽器發現併成功運行在與下面的頭附件的Excel程序聽在Outlook

Private WithEvents Items As Outlook.Items 
& 
Private Sub Items_ItemAdd(ByVal Item As Object) 

- 一旦在Excel中進行處理,我試圖讓這個數據自動返回到仙DER。 (這是問題所在)

我在Excel中使用後期綁定來創建並準備好返回電子郵件。這是'.send'之前的一步。理想情況下,我希望避免SendKeys語句,因爲如果同時在其他工作簿上工作,它不是完全可靠的。

在Excel ...

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "My email address" 
aEmail.Subject = "Testing" 
aEmail.Body = "Testing" 
aEmail.display 

End Sub 

我一直在不斷地試圖讓Outlook來識別Excel中創建與在MSDN頁面列出的事件這個新的電子郵件。我認爲類似下面的代碼是識別新的mailitem需要的東西,但使用Outlook.mailItem下的大多數預設聲明沒有成功。

Private WithEvents NewItem As Outlook.mailItem 

請讓我知道你是否有解決方案或替代的想法對我來說,追求

+1

如果downvoted,請告訴我爲什麼,所以我可以提高我的問題 – Xiphos

回答

1

解決的,如果有人需要這樣的未來。它繞過安全警告並且不依賴於發送密鑰。

Excel準備一封電子郵件並顯示它 - 當準備好時,Outlook中的「開啓事件」會在加載郵件時識別「到」地址,然後可以從那裏接管:使用.send語句完成。

請注意,需要添加更多參數,例如item.subject中的特定代碼,以確保發送正確的電子郵件。

在Excel:

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "[email protected]" 
aEmail.Subject = "Testing" 
aEmail.Body = "testing" 
aEmail.Display 

End Sub 

在Outlook:

Public WithEvents myItem As Outlook.mailItem 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If (TypeOf Item Is mailItem) Then 
     Set myItem = Item 
    End If 
End Sub 

Private Sub myItem_Open(Cancel As Boolean) 

If myItem.To = "[email protected]" Then 
    MsgBox "Detected" 
    myItem.Send 
End If 

End Sub