簡體   English   中英

導出訪問報告為 pdf 並附加到 Outlook email 使用 VBA

[英]Export access report as pdf and attach to Outlook email using VBA

我有一個員工數據庫,可以創建(除其他外)每月工資單和個人工資單。 個人工資單是一個基於查詢的報告,該查詢執行所有過濾(月份、員工),從具有月份和員工字段的未綁定表單中選取輸入參數。

在此處輸入圖像描述

工資單報告在報告視圖(不是打印預覽)中打開,上面有一個命令按鈕,可以將報告以 PDF 格式保存到特定文件夾,啟動 Outlook 並格式化 email 消息(收件人、主題、正文等...)。

在此處輸入圖像描述

到目前為止一切順利 - 命令按鈕確實以 PDF 格式將報告保存到指定文件夾,正確命名,打開 Outlook email,正確格式化 email...但是,沒有附件!

在此處輸入圖像描述

這是報告命令按鈕背后的代碼:


Option Compare Database
Option Explicit

Private Sub cmdEmailPayslip_Click()

On Error GoTo cmdEmailPayslip_Error
    
Dim O As New Outlook.Application
Dim M As Outlook.MailItem
Dim Msg As String
Dim aTextBody As String
Dim myPath As String
Dim myFile As String
Dim mySubject As String

    mySubject = Me.FirstName.Column(1) & " " & Me.LastName.Column(1) & _
    " - Payslip for " & Format$(Forms!fSF!SFrom, "mmmm yyyy")
    
    aTextBody = "Dear " & Me.FirstName.Column(1) & "," & _
    Chr(10) & Chr(10) & "Please find attached your payslip for the month of " & _
    Format$(Forms!fSF!SFrom, "mmmm yyyy") & _
    Chr(10) & Chr(10) & "Best regards," & _
    Chr(10) & Chr(10) & "CIVIC EA OPS Team!"

    myPath = "C:\Payroll PESA\Payslips"
    
    myFile = Format$(Date, "yyyymmdd") & " - " & Me.FirstName.Column(1) & " - Payslip for " & Format$(Forms!fSF!SFrom, "mmmm yyyy")
    
    DoCmd.OutputTo acOutputReport, "rPayslips", acFormatPDF, myPath & "\" & myFile & ".pdf", False
    
Set O = New Outlook.Application
Set M = O.CreateItem(olMailItem)
    
On Error Resume Next

With M
    .Body = aTextBody                                    'Set body text
    .To = Me.REmail                                      'Set email address
    '.Cc = ""                                            'Set email CC address
    .Subject = mySubject                                 'Set subject
    .Attachment.Add myPath & "\" & myFile
    .Display
End With

Set M = Nothing
Set O = Nothing

'Show message
MsgBox "The email message has been sent successfully.  ", vbInformation, "EMail message"

cmdEmailPayslip_Error:
    Resume Next

End Sub


我嘗試了很多排列,但沒有用。

我究竟做錯了什么?

提前謝謝了。

也許我應該改變我的方法並嘗試通過記錄集創建個人 PDF 工資單(並將它們保存到指定的文件夾,每個 PDF 文件的正確名稱,然后創建一組單獨的電子郵件,每個電子郵件包含特定的工資單作為附件) - 但這超出了我的理解...

您將報告另存為

myPath & "\" & myFile & ".pdf"

但嘗試添加此附件:

myPath & "\" & myFile

如果您不在On Error Resume Next之后運行此代碼(並且如果您的錯誤處理程序包含多個Resume Next ),它會向您顯示“無法打開文件”錯誤。


所有像這樣的情況下,當您創建一個文件並稍后使用它時,最好將完整的文件路徑\名稱存儲在一個變量中,這樣就不會發生這樣的錯誤。

sFullPath = myPath & "\" & myFile & ".pdf"
DoCmd.OutputTo acOutputReport, "rPayslips", acFormatPDF, sFullPath, False
'...
.Attachment.Add sFullPath 

PS 並在資源管理器中,關閉“隱藏已知文件類型的文件擴展名”設置。 這只會導致混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM