通过 Outlook 向 Access 报告的特定页面发送电子邮件
Posted
技术标签:
【中文标题】通过 Outlook 向 Access 报告的特定页面发送电子邮件【英文标题】:Send email a specific pages of an Access report via Outlook 【发布时间】:2019-09-05 16:29:55 【问题描述】:我有一个数据库,我想要一些 VBA 代码,使我能够通过 Outlook 通过电子邮件发送 Access 报告的特定页面。
例如,如果我想从报告中附加第 10 页到第 20 页。
我知道如何将报告附加到电子邮件中。这是我正常工作的代码,但我想从访问报告中发送特定页面。
提前致谢。
Dim olApp As Object
Dim olItem As Variant
Dim rec As Recordset
Dim db As Database
Dim fileName As String, todayDate As String
Set db = CurrentDb
todayDate = Format(Date, "MMDDYYYY")
fileName = Application.CurrentProject.path & "\Invoice_" & todayDate & ".pdf"
DoCmd.OutputTo acOutputReport, "rptInvoice", acFormatPDF, fileName, False
Set olApp = CreateObject("Outlook.application")
Set olItem = olApp.CreateItem(0)
olItem.display
olItem.To = Nz(rec![EmailPrimaryContact])
olItem.Subject = ""
olItem.Attachments.Add fileName
olItem.htmlBody = "Dear & " < br > " "
olItem.display
Set olItem = Nothing
Set rec = Nothing
【问题讨论】:
第 10-20 页有何重要意义? Access 可以按某些WHERE
子句逻辑过滤报告,但不能按任意页面过滤。
【参考方案1】:
假设您有 Adobe 作为打印机选项,请在调整报告的 Printer
属性后考虑 DoCmd.PrintOut
:
使用下面的子程序查找 Adobe 打印机
Sub Printers()
Dim prtDefault As Printer
For Each prtDefault In Application.Printers
Debug.Print prtDefault.DeviceName
Next prtDefault
Set prtDefault = Nothing
End Sub
调整后的 VBA (替换 DoCmd.OutputTo...
)
Sub OutlookEmailModule()
...
DoCmd.OpenReport "rptInvoice", acViewReport ' OPEN REPORT
Reports("rptInvoice").Printer = Application.Printers("Adobe PDF") ' ADJUST PRINTER
DoCmd.PrintOut acPages, 7, 10 ' SUBSET PAGES
' PROMPTS YOU TO SAVE DOCUMENT AS fileName
DoCmd.Close acReport, acSaveNo ' CLOSE W/O SAVING
...
olItem.Attachments.Add fileName ' USE SAME FILE AS ABOVE
...
End Sub
【讨论】:
在我撰写类似答案时击败我。 MS PrintToPDF 或 XPSDocumentWriter 驱动程序可能是替代品。 谢谢芭菲。这会有所帮助以上是关于通过 Outlook 向 Access 报告的特定页面发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
MS Access / Outlook 2010 - 如何选择从哪个帐户发送电子邮件?
MS Access:突出显示 MS Access 报告中的特定字段