我正在尝试使用后期绑定到Access 2010和Access 2003中来自VBA的电子邮件.2003让我'无法完成操作。一个或多个参数值无效。和2010年给我'无效的程序调用或参数。'我已经完成了一步,它在靠近底部的.send
处失败了。我设置绑定错了吗?我试图在参考文献中不使用Microsoft对象库的情况下这样做。
感谢。
'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
答案 0 :(得分:2)
如果没有引用,VBA将不会知道olTo
和olCC
等Outlook常量。使用后期绑定(无引用)时,必须为常量提供值,而不是常量的名称。
但是,由于您没有报告有关这些常量的编译错误,这表明您的代码模块在其声明部分中不包含Option Explicit
。尝试在没有Option Explicit
的情况下对VBA代码进行故障排除是浪费时间。
添加Option Explicit
,然后从VB编辑器的主菜单中选择Debug-> Compile并修复编译器抱怨的任何内容。之后继续进行故障排除。
答案 1 :(得分:1)
有关使用早期和晚期绑定通过Outlook发送电子邮件的文章here。在最后的“Late Bound Conversion Checklist”中,最后一个建议是
添加具有默认值
的可选参数
我不能保证这个建议,因为当我需要从Access发送电子邮件时,我使用的是CDO,而不是Outlook。不过,听起来似乎值得一试。