【发布时间】:2019-08-25 06:35:59
【问题描述】:
我正在使用 Access 2016 中的 Access 应用程序。该应用程序通过 DoCmd.OutputTo 方法输出到 PDF 文件。
我想将此 PDF 附件发送到我用代码构建的电子邮件中,或者打开带有附件的新 Outlook 电子邮件。
当我单击表单中触发包含我的子(位于单独的模块中)的代码的按钮时,电子邮件窗口永远不会显示,也不会发送电子邮件(取决于@987654324 的使用@ 与 .Send)。我也没有收到任何错误。
我认为还值得注意的是,调用创建 PDF 的模块内部的 sub 按预期工作。
我在 Windows 7 64 位计算机上运行 Access 2016 和 Outlook 2016,作为 Office 2016 Pro Plus 的一部分安装。 Office 套件是 32 位的。
模块和子 (电子邮件地址已编辑)
Dim objEmail As Outlook.MailItem
Dim objApp As Outlook.Application
Set objApp = CreateObject("Outlook.Application")
Set objEmail = oApp.CreateItem(olMailItem)
With objEmail
.Recipients.Add "email@domain.com"
.Subject = "Invoice"
.Body = "See Attached"
.Attachments.Add DestFile
.Display
End With
子调用
MsgBox "Now saving the Invoice as a PDF"
strInvoiceNbr = Int(InvoiceNbr)
strWhere = "[InvoiceNbr]=" & Me!InvoiceNbr
strDocName = "Invoice Print One"
ScrFile = "Invoice Print One"
DestFile = "Inv" + strInvoiceNbr + " - " + Me.GetLastname + " - " + GetLocation
MsgBox DestFile, vbOKOnly
DoCmd.OpenForm strDocName, , , strWhere
Call ExportToPDF(SrcFile, DestFile, "INV")
Call EmailInvoice(DestFile)
基于 PDF 在模块文件的子文件中输出的事实,我应该在创建 PDF 的子文件中创建电子邮件(或调用子文件)吗?
注意:我在 Stack Overflow 上查看了 this accepted answer 以及许多其他网站。我的问题有所不同,因为我问的是为什么没有显示或发送消息,而不是如何像其他人一样构建和发送消息。
编辑: 如果 Outlook 已打开,则 Outlook 不会打开并且不会发生任何事情。
最后说明:
要添加已接受的答案,在 Access 的 VBA 编辑器中,您可能必须转到 Tools > References 并根据您的 Office/Outlook 版本启用 Microsoft Outlook 16.0 Object Library 或类似内容。
【问题讨论】:
-
Outlook 是否打开,运行时是否可见?
-
未按预期工作时的基本规则:单步。你试过吗?您还需要消除所有不相关的代码:stackoverflow.com/help/mcve
-
您的代码中是否有
On Error Resume Next可能会掩盖错误? -
看起来 DestFile 不包含完整的文件路径。如果文件路径无效且找不到文件,代码将出错。您必须有一个错误处理程序来捕获错误。分步调试。调试时禁用错误处理程序。
-
是
DestFile文件名的完整路径吗?