Inserer tableau excel dans mail outlook
wil2168
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'essaye d'envoyer une feuille excel dans le corps d'en mail Outlook via vba
j'ai le code ci-dessous….mais cela ne fonctionne pas
j'essaye d'envoyer une feuille excel dans le corps d'en mail Outlook via vba
j'ai le code ci-dessous….mais cela ne fonctionne pas
Sub mail_outlook()
Dim AppOutlook As Outlook.Application
Dim mon_mail As Outlook.MailItem
Dim MaDate As Date
Set AppOutlook = CreateObject("Outlook.application")
Set mon_mail = AppOutlook.CreateItem(olMailItem)
Dim ma_feuille As Worksheet
Dim nb_ligne_operations As Integer
Set ma_feuille = ThisWorkbook.Sheets("operations")
Application.ScreenUpdating = False
nb_ligne_operations = ma_feuille.Range("B" & Application.Rows.Count).End(xlUp).Row
ma_feuille.Range("B2:M" & nb_ligne_operations).Select
With Selection.Parent.MailEnvelope.Item
.To = ma_feuille.Range("O1").Value
.CC = "***@***"
.Subject = "BOB HLU / Pending trades vd"
.mail.attachements.Add "c:\update_sony_20180121"
.Display
End With
Application.ScreenUpdating = True
End Sub
3 réponses
-
Bonjour
.mail.attachements.Add "c:\update_sony_20180121"
N'aurais tu pas oublié d'indiquer l'extension du fichier ?
-
bonjour
en faite la ligne de code ne doit pas être mise
elle sert à mettre le fichier en pièce jointe
moi je souhaite avoir mon tableau excel dans le corps de mon mail -
Une rapide recherche amène sur des liens tel que
https://social.msdn.microsoft.com/Forums/en-US/693f49a6-973a-4258-af3c-7ec05e1bb7a1/excel-vba-to-copy-table-to-outlook-body?forum=exceldev
Qui indique
Dans un module, coller le code :Function RangetoHTML(rng As Range) Dim fso As Object Dim ts As Object Dim TempFile As String Dim TempWB As Workbook TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 'Copy the range and create a new workbook to past the data in rng.Copy Set TempWB = Workbooks.Add(1) With TempWB.Sheets(1) .Cells(1).PasteSpecial Paste:=8 .Cells(1).PasteSpecial xlPasteValues, , False, False .Cells(1).PasteSpecial xlPasteFormats, , False, False .Cells(1).Select Application.CutCopyMode = False On Error Resume Next .DrawingObjects.Visible = True .DrawingObjects.Delete On Error GoTo 0 End With 'Publish the sheet to a htm file With TempWB.PublishObjects.Add( _ SourceType:=xlSourceRange, _ Filename:=TempFile, _ Sheet:=TempWB.Sheets(1).Name, _ Source:=TempWB.Sheets(1).UsedRange.Address, _ HtmlType:=xlHtmlStatic) .Publish (True) End With 'Read all data from the htm file into RangetoHTML Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) RangetoHTML = ts.readall ts.Close RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ "align=left x:publishsource=") 'Close TempWB TempWB.Close savechanges:=False 'Delete the htm file we used in this function Kill TempFile Set ts = Nothing Set fso = Nothing Set TempWB = Nothing End Function
et pour l'envoi du mailSub Mail_Selection_Range_Outlook_Body() Dim rng As Range Dim OutApp As Object Dim OutMail As Object Set rng = Nothing On Error Resume Next 'Only the visible cells in the selection Set rng = Selection.SpecialCells(xlCellTypeVisible) 'You can also use a fixed range if you want 'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible) On Error GoTo 0 If rng Is Nothing Then MsgBox "The selection is not a range or the sheet is protected" & _ vbNewLine & "please correct and try again.", vbOKOnly Exit Sub End If With Application .EnableEvents = False .ScreenUpdating = False End With Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = "***@***" .CC = "" .BCC = "" .Subject = "This is the Subject line" .HTMLBody = RangetoHTML(rng) ' .Body = Selection.Paste .Display 'or use .Send // Le temps des tests, utiliser Display pour voir le résultat, puis après, une fois ok, remplacer par .Send pour envoyer le mail. End With On Error GoTo 0 With Application .EnableEvents = True .ScreenUpdating = True End With Set OutMail = Nothing Set OutApp = Nothing End Sub