开发者

macro to email Access reports not as an attachment

I don't know VBA. Is there a way for me have the macro to send the email where the report would be in开发者_如何学C the body of the email and not as an attachment? I currently use the "send-object" command and send it in html format.


This is how I did it with SendObject, it attaches the report as a RTF and puts it in the body of the email.

Private Sub btnEmail_Click()

    Dim IDnumber As Integer
    Dim Message As String
    Dim EmailTo As String
    Dim FileName As String

    'Get the current record's ID Number
    IDnumber = Me![ID]
    'set file name and path
    FileName = Environ("USERPROFILE") & "\My Documents\temp.html"
    'set email address
    EmailTo = "someone@domain.com"

    'get form to open a new record
    DoCmd.GoToRecord , , acNewRec

    'generate report for the current record entered
    DoCmd.OpenReport "ReportName", acPreview, , "[ID]=" & IDnumber, acHidden
    'create HTML file for the report
    DoCmd.OutputTo acOutputReport, "ReportName", acFormatHTML, FileName

    'open file
    Open FileName For Input As #1
    'read the file into a string
    Message = Input(LOF(1) - 1, 1)
    'close the file
    Close 1

    'generate email
    DoCmd.SendObject acSendReport, "ReportName", acFormatRTF, EmailTo, , , "Subject", Message
    'close the report
    DoCmd.Close acReport, "ReportName"

    'suppress errors if file is not there
    On Error Resume Next
    'remove file
    Kill FileName

End Sub


If you are using Outlook, you can write a report or query to disk and use either HTMLBody or RTFBody, it is a while since I tested this, I hope it is still useful.

Const ForReading = 1, ForWriting = 2, ForAppending = 3

Dim fs, f
Dim RTFBody
Dim MyApp As New Outlook.Application
Dim MyItem As Outlook.MailItem

DoCmd.OutputTo acOutputReport, "Report1", acFormatRTF, "Report1.rtf"
''DoCmd.OutputTo acOutputQuery, "Query1", acFormatHTML, "Query1.htm"

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.OpenTextFile("Report1.rtf", ForReading)
''Set f = fs.OpenTextFile("Query1.htm", ForReading)
RTFBody = f.ReadAll
''Debug.Print RTFBody
f.Close

Set MyItem = MyApp.CreateItem(olMailItem)
With MyItem
   .To = "abc@def.ghi"
   .Subject = "Subject"
   .RTFBody = RTFBody
   ''.HTMLBody = RTFBody
End With
MyItem.Display
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜