2

我正在尝试在 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
4

2 回答 2

2

如果没有引用,VBA 将不知道 Outlook 常量,例如olToolCC。对于后期绑定(无引用),您必须提供常量的而不是常量的名称

但是,由于您没有报告有关这些常量的编译错误,这表明您的代码模块不包含Option Explicit在其声明部分中。尝试在没有 VBA 代码的情况下进行故障排除Option Explicit是浪费时间。

添加Option Explicit,然后从 VB 编辑器的主菜单中选择 Debug->Compile 并修复编译器抱怨的任何问题。之后继续进行故障排除。

于 2013-04-12T14:00:16.540 回答
1

这里有一篇关于使用早期和晚期绑定通过 Outlook 发送电子邮件的文章。在最后的“后期转换清单”中,最后一个建议是

添加具有默认值的可选参数

我不能保证这个建议,因为当我需要从 Access 发送电子邮件时,我使用的是 CDO,而不是 Outlook。不过,听起来它可能值得一试。

于 2013-04-12T13:52:47.743 回答