2016-11-18 54 views
0

我在Excel中創建了Outlook郵件草稿,在Excel中有一個現有的VBA代碼片段。請考慮以下代碼,該代碼正常工作並允許在Outlook中手動發送郵件後創建:在Office 365中從Excel創建Outlook郵件草稿

Dim objOLOutlook As New Outlook.Application 
Dim objOLMail As Outlook.MailItem 

Set objOLMail = objOLOutlook.CreateItem(olMailItem) 
objOLMail.SentOnBehalfOfName = WsMtrx.Cells(2, 2).Value 
objOLMail.To = .Cells(i, 2).Value 
objOLMail.CC = .Cells(i, 3).Value 
objOLMail.Sensitivity = WsMtrx.Cells(3, 2).Value 
objOLMail.Importance = WsMtrx.Cells(4, 2).Value 
objOLMail.Subject = dicHtmlText.Item(.Cells(i, 6).Value & "Subject") 
objOLMail.BodyFormat = olFormatPlain 
objOLMail.HTMLBody = getHtmlText(.Cells(i, 6).Value, .Cells(i, 5).Value, .Cells(i, 4).Value, .Cells(i, 10).Value, i, arrSignatur) 
objOLMail.Save 

現在,我們已經切換到Office 365(雲中的Exchange服務器),並且在相同的代碼仍然有效創建郵件,發送的電子郵件會導致錯誤:

Outlook error message

我已經注意到,outlook屬性會顯示在「顯示名稱」字段中的電子郵件地址,而不是隻的「電子郵件地址」字段:

Outlook properties

而正常工作手動創建郵件將在「顯示名稱」字段以及「電子郵件地址」字段中顯示的電子郵件地址,並在「電子郵件類型」字段中顯示「SMTP」:

Outlook properties

我已經嘗試了幾件事情,包括清除自動完成緩存無濟於事。在Excel/VBA中,我可以做些什麼來正確設置電子郵件地址?還是它是一個服務器端問題/設置,必須解決?

回答

0

我終於找到了自己的解決方案:其實

Dim recipient As Outlook.recipient 

For Each recipient In objOLMail.Recipients 
    recipient.Resolve 
Next 

objOLMail.Save 

相當簡單。不知何故,事情的設置方式我現在需要明確解決每個收件人,這是以前沒有必要的。

相關問題