2013-10-08 230 views
0

好的,所以我一直把樂隊艾滋病帶到一個簡單的代碼片段上,以獲得一封電子郵件發送。我一直試圖做的是收到一封電子郵件,通過展望發送。我的第一個問題是runtime object define 287在下面一行:從Access VBA通​​過Outlook發送自動電子郵件

Set appOutlookRec = appOutlookMsg.Recipients.Add 

這麼對付我說:

Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 

這停止的。現在電子郵件將形成,我可以使用.display來查看我的電子郵件,但是當我嘗試使用.send時,在實際發送電子郵件之前,Outlook的實例會關閉。

爲了防止我強制展望,但我想檢查一個實例是否已經打開。打開我使用的收件箱:

Set appOutlook = CreateObject("Outlook.Application") 
Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
olFolder.Display 

我是否在複雜的自動化過程?還是我在正確的道路上,有人可以幫助檢查是否在瀏覽器窗口中打開Outlook的實例?

感謝

更新發送

Const olMailItem = 0 
Const olTo = 1 
Const olCC = 2 
Const olFolderInbox = 6 
Dim appOutlook As Object 
Dim appOutlookMsg As Object 
Dim appOutlookRec As Object 
Dim objNS As Object 
Dim olFolder As Object 

Set appOutlook = CreateObject("Outlook.Application") 
Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
olFolder.Display 

'Create a new empty email message 
Set appOutlookMsg = appOutlook.CreateItem(olMailItem) 

With appOutlookMsg 
Set appOutlookRec = appOutlookMsg.Recipients.Add("[email protected]") 
    appOutlookRec.Type = olTo 
    .Subject = "Testing Closed Tickets" 
    .Body = "This is just a test." 
    '.Display 
    .Send 
End With 

Set appOutlookMsg = Nothing 
Set appOutlook = Nothing 
Set appOutlookRec = Nothing 
+2

難道你試着在'。發送'之前保存電子郵件。 –

+1

好(但奇怪)的消息! Outlook是唯一的Office應用程序,其中'= CreateObject(「Outlook.Application」)'將創建一個實例,如果它不存在**或**如果Outlook已經運行,則使用現有實例。 – tbur

+0

你可以發佈你的整個代碼嗎?你是從Outlook或其他來源運行此代碼(我假設MS Access)?通過引用訪問 – enderland

回答

1

我遇到過類似的事情,我通常會認爲你可以通過保存的電子郵件避免錯誤之前:

appOutlookMsg.Save 
appOutlookMsg.Send 
相關問題