Inserer tableau excel dans mail outlook
wil2168
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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
A voir également:
- Insérer un mail dans excel
- Insérer vidéo dans powerpoint - Guide
- Insérer liste déroulante excel - Guide
- Insérer signature word - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
3 réponses
Bonjour
N'aurais tu pas oublié d'indiquer l'extension du fichier ?
.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
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 :
et pour l'envoi du mail
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 mail
Sub 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