在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.
..但是,我找不到添加报告的正确组合。 谢谢!!
答案 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。