MS Access - 使用Outlook自动发送电子邮件模板

时间:2016-07-22 10:33:22

标签: ms-access outlook access-vba ms-access-2010

我试图修改Sorceri's answer on StackOverflow中的代码,该代码演示了如何使用outlook发送电子邮件。我尝试修改此项以提供特定于数据库中所选条目的自定义电子邮件模板:

Private Sub Emailtemplatebtn_Click()

Dim App As Outlook.Application
Dim Mail As MailItem
Set App = CreateObject("Outlook.application")

Set Mail = oApp.CreateItem(olMailItem)
oMail.Body = "Dear" &[Forename]& "," &vbCrLf& &vbCrLf& "It has been six months or longer since I last contacted you. Have there been any big gains with regard to impact?"
oMail.Subject = &[Project name]& "- check up"
oMail.To = &Email&
oMail.Send
Set oMail = Nothing
Set oApp = Nothing

End Sub

不幸的是,代码不起作用。内置的VBA编辑器突出显示行" oMail.Body"," oMail.subject"和" oMail.to"红色。

我认为这可能是一个非常有用的功能,因为它将为用户节省更多时间 - 脚本/数据库将基本上处理所有用户的复制和粘贴!

解决方案

使用" Option Explicit"后,似乎更容易找到代码失败的原因 - 变量未正确定义(我添加了一些" o" s,并采取了一些远)。这是完成的代码:

  1. Put" Option Explicit"在表单的VBA页面顶部(表单的模块)

  2. 使用以下代码,很大程度上由Andre修正。

    Private Sub Emailtemplatebtn_Click()

    Dim App As Outlook.Application
    Dim oMail As MailItem
    Set App = CreateObject("Outlook.application")
    
    
    Set oMail = App.CreateItem(olMailItem)
    oMail.Body = "Dear" & Me![Forename] & "," & vbCrLf & vbCrLf & "It has been six months or longer since I last contacted you. Have there been any big gains with regard to impact?"
    oMail.Subject = Me![Project name] & "- check up"
    oMail.To = Me!Email
    oMail.Send
    Set oMail = Nothing
    Set App = Nothing
    
    End Sub
    
  3. 如果您希望在发送前对电子邮件进行修改,请将oMail.send更改为oMail.display

1 个答案:

答案 0 :(得分:2)

你想要

Dim oMail As MailItem

(注意" o")

&的语法为variable & "string",请注意空格,并且不要连续使用两个&

这些行应该是:

oMail.Body = "Dear" & [Forename] & "," & vbCrLf & vbCrLf & "It has been six months or longer since I last contacted you. Have there been any big gains with regard to impact?"
oMail.Subject = [Project name] & "- check up"
oMail.To = Email

如果变量是表单上的控件,最好编写Me!ForenameMe![Project name],以便Access知道在哪里查找它们。