J'ai écrit une macro qui, en cliquant sur un bouton, envoie un e-mail automatisé via Outlook. Tout se passe bien, sauf que je n'arrive pas à comprendre comment joindre un fichier à l'e-mail. Partout où j'ai regardé, un exemple de code pour joindre des fichiers à un e-mail concerne des fichiers nommés statiques, comme dans, vous envoyez le même nom de fichier, avec le même chemin à chaque fois.
Si cela le rend plus pratique, le bouton qui exécute cette macro se trouve dans le classeur que j'essaie de joindre. Je ne suis pas sûr que l'ouverture d'une fenêtre de l'Explorateur Windows soit plus facile et attacher le fichier de cette façon serait préférable.
Sub mySub
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.recipient
Dim objOutlookAttach As Outlook.Attachment
Dim WeekendingDate As Date
With Worksheets("Macro Buttons")
WeekendingDate = Range("N2").Value
End With
Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
Set objOutlookRecip = .Recipients.Add("blah@blah")
objOutlookRecip.Type = olTo
.Subject = "Blah " & WeekendingDate
.Body = "blah blah blah"
'Add attachments to the message
[some code]
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
If DisplayMsg Then
.Display
Else
.Save
End If
End With
Set objOutlook = Nothing
End Sub
Vous avez besoin du Attachments.Add
code inséré dans la configuration de MailItem:
With objOutlookMsg
Set objOutlookRecip = .Recipients.Add("blah@blah")
objOutlookRecip.Type = olTo
.Subject = "Blah " & WeekendingDate
.Body = "blah blah blah"
'Add attachments to the message [some code]
.Attachments.Add "pathToFile"
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
If DisplayMsg Then
.Display
Else
.Save
End If
End With
Set objOutlook = Nothing
Dans l'un de mes propres scripts, je passe une collection de pièces jointes au MailItem à attacher en utilisant un objet Dictionary et le code suivant:
With oMailItem
Set .SendUsingAccount = oOutlook.Session.Accounts.Item(iAccount)
.To = EmailData("To")
.CC = EmailData("CC")
.BCC = EmailData("BCC")
.Subject = EmailData("Subject")
.Body = EmailData("Body")
sAttachArray = Split(EmailData("AttachmentPaths"), ";")
For Each sAttachment In sAttachArray
.Attachments.Add(sAttachment)
Next
.Recipients.ResolveAll
.Display ' debug mode - uncomment this to see email before it's sent out
End With