Envoyer un onglet en format image dans Outlook
Bonjour,
je me permets de me tourner vers vous car je suis dans une impasse.
J'aimerais afficher un onglet d'un classeur dans un nouveau mail Outlook, j'ai opté pour un format image.
Pour ce faire j'ai choisi de copier ( la feuille qui m’intéresse), je la colle ensuite, en format image, dans un onglet temporaire ( qui ne me sert qu'a ça).
La où je bloque c'est dans la gestion de cette image pour l’intégrer dans Outlook.
Mes connaissances, en VBA, étant un peu limité je n'arrive pas à "stocker" cette image dans une variable...(même si je pense qu'un objet serait plus adapté).
Auriez vous des solutions pour gérer ce type de données ? Peut-être que je m'y prend mal pour affecter l'image a un objet.
Merci d'avancer pour vos retours
Dardy
Bonjour Dardy,
à tester,
Sub SendRangeByMail()
Dim rngeSend As Range
With Application
On Error Resume Next
Set rngeSend = Sheets("Feuil1").Range(Range("A1").CurrentRegion.Address) 'à adapter
If rngeSend Is Nothing Then Exit Sub
sFile = Environ("Temp") & "\XLRange.htm"
On Error GoTo 0
.ActiveWorkbook.PublishObjects.Add(4, sFile, rngeSend.Parent.Name, rngeSend.Address, 0, "", "").Publish True
Call PrepareOutlookMail(sFile)
Kill sFile
End With
End Sub
Sub PrepareOutlookMail(sFileName)
Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem
Set appOutlook = CreateObject("Outlook.Application")
If Not (appOutlook Is Nothing) Then
Set oMail = appOutlook.CreateItem(olMailItem)
With oMail
.To = "Adresse@mail.fr"
.Subject = "Le sujet"
.HTMLBody = ReadFile(sFileName)
' .Attachments.Add (ThisWorkbook.FullName)
.Display 'metre cette ligne en commentaire pour éviter l'affichage du mail
' .Send 'mettre cette ligne active pour l'envoi du mail sans qu'il soit affiché
End With
Set oMail = Nothing
Set appOutlook = Nothing
End If
End Sub
Public Function ReadFile(sFileName) As String
Dim fso As Object, fFile As Object
Dim sTemp As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set fFile = fso.OpenTextFile(sFileName, 1, False)
sTemp = fFile.ReadAll
fFile.Close
Set fFile = Nothing
ReadFile = sTemp
End Function
bonjour i20100,
Merci pour cette réponse.
J'ai testé mais la macro n'affiche pas toute ma range, elle ne m'affiche que les premières lignes de ma feuille peu importe la range renseigné sur rngeSend.
J'ai vu que rngeSend est intégré au mail comme un tableau. Il n'est pas possible d'exporter la feuille en format image ? (objet Shape ou autre ?) Parce que avant de l’intégrer j'aimerais redimensionner l'image crée (si il n'y a pas solution technique adaptée, je peux m'en passer).
Je pensais partir une solution qui enregistre l'image en local sur le pc pour la réutiliser dans le mail, puis l’intégrer dans le corps HMTL. Mais je me demande si c'est vraiment adapté sachant que cette macro serai utilisée par des personnes sur leurs pc respectifs.
Dardy
re,
nouvelle proposition à tester,
Sub Mail_Plage_en_image()
Dim objOL As Object, ObjMail As Object
Dim oAttach As Object, ColAttach As Object
Dim Plage As Range, Pth As String, image As String, file As String
Set Plage = Range("A1:B4") 'à adapter
Pth = ThisWorkbook.Path
file = Pth & "\" & "MailImage.jpg"
Set objOL = CreateObject("Outlook.Application")
Set ObjMail = objOL.CreateItem(0)
Set ColAttach = ObjMail.Attachments
Set oAttach = ColAttach.Add(file) 'Changer le chemin et le nom de l'image
With ObjMail
.To = "test@yy.com" 'à adapter
' .CC = ""
.Subject = "test" 'à adapter
.HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & _
"Bonjour, <br><br><IMG src=cid:MailImage.jpg></BODY>" 'Nom de l'image sans chemin
.Display 'Send Display permet d'afficher le message, Send l'envoie sans affichage
End With
Set oAttach = Nothing
Set ColAttach = Nothing
Set ObjMail = Nothing
Set objOL = Nothing
End Sub
Bonjour i20100,
Merci pour votre réponse, j'ai finalement trouvé une alternative en me basant sur une solution que vous avez trouvé sur l'import d'un graphique dans un corps de mail. J'ai donc insérer mon image dans un graph et inserer celui-ci dans le mail et ça fonctionne
Par contre j'ai un dernier soucis, je dois faire un "clic-droit > Habillage > centré", dans Outlook, pour que mon image s'affiche bien dans le mail, une fois celui-ci envoyé.
Ca peut se gérer avec le code HTML ? ( j''ai essayé un text-align, ca n'a rien changé
Dardy
Bonjour Dardy,
j'ai réussi à mettre l'image à droite mais pas à la centrer,
.HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & text1 & _
", <br><br><img align=RIGHT src='cid:MailImage.jpg'" & "width='200' height='150'><br></BODY>"
j'espère qu'un autre contributeur pourra nous éclairer à ce sujet.