Access发送电子邮件,其中包含报告作为附件

时间:2015-11-25 14:01:16

标签: vba email ms-access report attachment

在MS Access中使用VBA代码构建器,我已经能够编写打开Outlook的代码,并通过单击按钮向我发送电子邮件。我在添加附件时遇到问题。我发现的大多数代码都将MS数据库外的文件添加为附件,我想在我的数据库中添加一个作为附件创建的报告。

Private Sub EmailReport_Click()
Dim oApp As New Outlook.Application
Dim oEmail As Outlook.MailItem

'Email the results of the report generated
Set oEmail = oApp.CreateItem(olMailItem)
oEmail.To = "myemailaddress@email.com"
oEmail.Subject = "Training Roster"
oEmail.Body = "Roster Information"

With oEmail
    .Send
    MsgBox "Email Sent"
End With

我一直在寻找类似于

的命令
oEmail.Attachments.Add Me.

..但是,我找不到添加报告的正确组合。 谢谢!!

3 个答案:

答案 0 :(得分:5)

如上所述,将报告导出到外部文件(如.pdf)中,以便附加到外发电子邮件中。请记住,报告是内部Access对象,而不是电子邮件的文件格式。使用DoCmd.OutputTo,您可以动态创建日期标记的pdf,并在same location中作为数据库动态创建pdf,以便为所有用户提供可扩展的解决方案。

Private Sub EmailReport_Click()
Dim oApp As New Outlook.Application
Dim oEmail As Outlook.MailItem
Dim fileName As string, todayDate As String    

'Export report in same folder as db with date stamp
todayDate = Format(Date, "MMDDYYYY")
fileName = Application.CurrentProject.Path & "\ReportName_" & todayDate & ".pdf"
DoCmd.OutputTo acReport, "ReportName", acFormatPDF, fileName, False

'Email the results of the report generated
Set oEmail = oApp.CreateItem(olMailItem)
With oEmail
    .Recipients.Add "myemailaddress@email.com"
    .Subject = "Training Roster"
    .Body = "Roster Information"
    .Attachments.Add fileName
    .Send        
End With

MsgBox "Email successfully sent!", vbInformation, "EMAIL STATUS"

答案 1 :(得分:2)

您可以通过电子邮件将报告导出为PDF格式:

DoCmd.SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc,Subject, MessageText, EditMessage, TemplateFile)

答案 2 :(得分:0)

使用DoCmd.SendObject时,您需要更新Outlook Programmatic Access,以关闭有关自动发送电子邮件的警告。就我而言,域管理员启用了此选项以进行更改。更多信息here