Je ne connais pas VBA. Y a-t-il un moyen pour moi d'avoir la macro pour envoyer l'email où le rapport serait dans le corps de l'email et non en pièce jointe? J'utilise actuellement la commande "send-object" et je l'envoie au format html. Je vous remercie beaucoupmacro pour envoyer par e-mail les rapports d'accès non en pièce jointe
0
A
Répondre
0
Si vous utilisez Outlook, vous pouvez écrire un rapport ou une requête sur disque et utiliser soit HTMLBody ou RTFBody, il ya un moment depuis que j'ai testé cela, j'espère qu'il est toujours utile.
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 = "[email protected]"
.Subject = "Subject"
.RTFBody = RTFBody
''.HTMLBody = RTFBody
End With
MyItem.Display
2
Voilà comment je l'ai fait avec SendObject, il attache le rapport en tant que RTF et il met dans le corps de l'e-mail.
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 = "[email protected]"
'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