通过 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】:

假设您有 Adob​​e 作为打印机选项,请在调整报告的 Printer 属性后考虑 DoCmd.PrintOut

使用下面的子程序查找 Adob​​e 打印机

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 报告的特定页面发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Access VBA 从 Outlook 获取附件

使用 VBA 禁用 Outlook 安全设置

MS Access / Outlook 2010 - 如何选择从哪个帐户发送电子邮件?

MS Access:突出显示 MS Access 报告中的特定字段

从 Access 报告到 Excel 电子表格的某些字段会损坏

访问Outlook集成