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!!
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"
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)
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 .