2013-04-12 31 views
2

我試圖在Access 2010和Access 2003中使用VBA對電子郵件進行後期綁定。2003年給了我'無法完成操作。一次或多次參數值無效。' 2010年給了我'無效的程序調用或參數'。我已經完成了這一步,並且在底部附近的.send處失敗。我是否設置了綁定錯誤?我試圖在不使用參考文獻中的Microsoft Object Library的情況下執行此操作。通過VBA發送帶有延遲綁定錯誤的電子郵件

謝謝。

'Refers to Outlook's Application object 
Dim appOutlook As Object 
'Refers to an Outlook email message 
Dim appOutlookMsg As Object 
'Refers to an Outlook email recipient 
Dim appOutlookRec As Object 

'Create an Outlook session in the background 
Set appOutlook = CreateObject("Outlook.Application") 

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

'Using the new, empty message... 
With appOutlookMsg 

strSQL = "SELECT Email FROM Employees WHERE " & sqlVar & " = True" 
Set myR = CurrentDb.OpenRecordset(strSQL) 

Do While Not myR.EOF 
Set appOutlookRec = .Recipients.Add(myR!Email) 
appOutlookRec.Type = olTo 
myR.MoveNext 
Loop 

strSQL = "SELECT Email FROM Employees WHERE '" & user & "' = Username"  
Set myR = CurrentDb.OpenRecordset(strSQL) 

Set appOutlookRec = .Recipients.Add(myR!Email) 
appOutlookRec.Type = olCC 

.Subject = wonum 
.Body = "Department: " & strDep & vbNewLine & vbNewLine & _ 
    "Issue is at: " & strIssue & vbNewLine & vbNewLine & _ 
    "Priority is: " & strPriority & vbNewLine & vbNewLine & _ 
    "Complete by: " & strDate & vbNewLine & vbNewLine & _ 
    "Description: " & strDesc 

.Send 

End With 

回答

2

沒有參考,VBA將不知道Outlook常量,如olToolCC。對於後期綁定(無參考),您必須爲常量提供而不是常量的名稱

但是,由於您沒有報告有關這些常量的編譯錯誤,這表明您的代碼模塊在它的聲明部分中不包含Option Explicit。試圖在沒有Option Explicit的情況下對VBA代碼進行故障排除是浪費時間。

添加Option Explicit,然後從VB編輯器的主菜單中選擇Debug-> Compile並修復編譯器所抱怨的任何內容。繼續後續解決問題。

+2

好點。當我看到'.CreateItem(olMailItem)'我發現在代碼中的其他地方必須有一個'Const olMailItem = 0'。使用'Option Explicit'對我來說這麼自動化了很多年,所以當我考慮一個問題時我甚至都沒有想到它。 –

+0

我添加了Option Explicit,發現了一些錯誤。但是我應該如何設置olTo和olCC?我將它們設置爲'Const olTO = 0',它在編譯正確後仍然給我同樣的錯誤。 (PS感謝明確的信息) – Grant

+1

從OlMailRecipientType枚舉:http://msdn.microsoft.com/en-us/library/office/ff865653.aspx – HansUp

1

有一篇文章here通過Outlook使用早期和晚期綁定發送電子郵件。在「後期綁定轉換清單」的結尾,最後的建議是

添加有默認值

我不能擔保他的意見可選參數,因爲當我需要發送電子郵件從Access我使用CDO,而不是Outlook。儘管如此,這聽起來可能值得一試。

相關問題