Я работаю с приложением Access в Access 2016. Приложение выводит в файл PDF с помощью метода DoCmd.OutputTo .
Я хочу отправить этот PDF-файл, прикрепленный к электронному письму, которое я встроил в код, или открыть новое электронное письмо Outlook с вложенным файлом.
Когда я нажимаю кнопку в форме, которая вызывает код, включающий мои подпрограммы (которые расположены в отдельных модулях), окно электронной почты никогда не отображается, а также не отправляется электронное письмо (в зависимости от использования .Display
против .Send
). Я также не получаю никаких ошибок.
Я думаю, что также стоит отметить, что Call to sub внутри модуля, который создает PDF, работает как положено.
Я использую Access 2016 и Outlook 2016, установленные как часть Office 2016 Pro Plus на 64-разрядной машине с Windows 7. Пакет Office является 32-разрядным.
Модуль & Sub
(адрес электронной почты отредактирован )
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?
ПРИМЕЧАНИЕ : я просмотрел этот принятый ответ здесь, на переполнении стека, а также многих других. Мой вопрос отличается из-за того, что я спрашиваю, почему сообщение не отображается или не отправляется, а не о том, как создать и отправить сообщение, как остальные.
EDIT :
Outlook не открывается и ничего не происходит, если Outlook уже открыт.
Финальная нота :
Чтобы добавить принятый ответ, в редакторе VBA для Access вам, вероятно, придется перейти на Tools > References
и включить Microsoft Outlook 16.0 Object Library
или аналогичный в зависимости от вашей версии Office / Outlook.