макрос для электронной почты Доступ к отчетам не в качестве вложения - PullRequest
0 голосов
/ 29 июля 2010

Я не знаю VBA.Есть ли способ для меня, чтобы макрос отправлял электронное письмо, где отчет был бы в теле письма, а не в приложении?В настоящее время я использую команду «send-object» и отправляю ее в формате html.

Ответы [ 2 ]

2 голосов
/ 27 октября 2012

Вот как я это сделал с SendObject, он прикрепляет отчет в формате RTF и помещает его в тело письма.

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
0 голосов
/ 29 июля 2010

Если вы используете Outlook, вы можете записать отчет или запрос на диск и использовать либо HTMLBody, либо RTFBody. Прошло довольно много времени с тех пор, как я это тестировал, надеюсь, что это все еще полезно.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...