web-dev-qa-db-fra.com

Ms Access Envoyer un e-mail avec le rapport en pièce jointe

En utilisant le générateur de code VBA dans MS Access, j'ai pu écrire du code qui ouvre Outlook et m'envoyer un email en un clic. J'ai des problèmes pour ajouter une pièce jointe. La plupart du code que j'ai trouvé ajoute des fichiers en dehors de la base de données MS en tant que pièce jointe. J'aimerais ajouter un rapport créé dans ma base de données en tant que pièce jointe.

Private Sub EmailReport_Click()
Dim oApp As New Outlook.Application
Dim oEmail As Outlook.MailItem

'Email the results of the report generated
Set oEmail = oApp.CreateItem(olMailItem)
oEmail.To = "[email protected]"
oEmail.Subject = "Training Roster"
oEmail.Body = "Roster Information"

With oEmail
    .Send
    MsgBox "Email Sent"
End With

J'ai examiné une commande similaire à

oEmail.Attachments.Add Me.

..Mais je ne trouve pas la combinaison correcte pour ajouter mon rapport. Merci!!

3
Stacy

Comme indiqué, exportez votre rapport dans un fichier externe tel que .pdf afin de le joindre à votre courrier sortant. N'oubliez pas qu'un rapport est un objet Access interne et n'est pas facilement dans un format de fichier pour un courrier électronique. Avec DoCmd.OutputTo , vous pouvez créer dynamiquement le fichier PDF à la volée avec la date et au même emplacement en tant que base de données pour une solution généralisable pour tous vos utilisateurs.

Private Sub EmailReport_Click()
Dim oApp As New Outlook.Application
Dim oEmail As Outlook.MailItem
Dim fileName As string, todayDate As String    

'Export report in same folder as db with date stamp
todayDate = Format(Date, "MMDDYYYY")
fileName = Application.CurrentProject.Path & "\ReportName_" & todayDate & ".pdf"
DoCmd.OutputTo acReport, "ReportName", acFormatPDF, fileName, False

'Email the results of the report generated
Set oEmail = oApp.CreateItem(olMailItem)
With oEmail
    .Recipients.Add "[email protected]"
    .Subject = "Training Roster"
    .Body = "Roster Information"
    .Attachments.Add fileName
    .Send        
End With

MsgBox "Email successfully sent!", vbInformation, "EMAIL STATUS"
5
Parfait

Vous pouvez exporter votre rapport en tant que PDF par courrier électronique avec ceci:

DoCmd.SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc,Subject, MessageText, EditMessage, TemplateFile)
2
David

Avec DoCmd.SendObject, vous devez mettre à jour Outlook Programmatic Access pour désactiver les avertissements concernant l'envoi automatique d'e-mails. Dans mon cas, l'administrateur du domaine a activé cette option pour changer. Plus d'informations ici .

0
user3627268