Back to jkp-ads.com |
Ron de Bruin
|
Ron de Bruin decided to remove all Windows Excel content from his website for personal reasons. If you want to know why, head over to rondebruin.nl.
Luckily, Ron was kind enough to allow me to publish all of his Excel content here.
Most of these pages are slightly outdated and may contain links that don 't work. Please inform me if you find such an error and I'll try to fix it.
Kind regards
Jan Karel Pieterse
Important read this :
The code on this page is only working when you use Outlook as your mail
program.
Copy the code in a Standard module of your workbook, if you just
started with VBA see this page.
Where do I paste
the code that I find on the internet
Check out this Tip page for changing the code on this page.
Tips for changing the code examples
This example sends a chart with the
name "Chart 1" from "Sheet1" of the ActiveWorkbook.
It will save
My_Sales1.gif in the temp folder, send the mail and delete My_Sales1.gif
after that.
Sub SaveSend_Embedded_Chart() 'Working in 2000-2016 'For Tips see: https://jkp-ads.com/rdb/win/winmail/Outlook/tips.htm Dim OutApp As Object Dim OutMail As Object Dim Fname As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) 'File path/name of the gif file Fname = Environ$("temp") & "\My_Sales1.gif" 'Save Chart named "Chart 1" as gif file 'If you hold down the CTRL key when you select the chart 'in 2000-2013 you see the name in the Name box(formula bar) ActiveWorkbook.Worksheets("Sheet1").ChartObjects("Chart 1").Chart.Export _ Filename:=Fname, FilterName:="GIF" On Error Resume Next With OutMail .To = "ron@debruin.nl" .CC = "" .BCC = "" .Subject = "This is the Subject line" .Body = "Hi there" .Attachments.Add Fname .Send 'or use .Display End With On Error GoTo 0 'Delete the gif file Kill Fname Set OutMail = Nothing Set OutApp = Nothing End Sub
This example sends a chart sheet with the name "Chart1" from the
ActiveWorkbook.
It will save My_Sales2.gif the temp folder, send the mail
and delete My_Sales2.gif after that.
Sub SaveSend_Chart_Sheet() 'Working in 2000-2016 'For Tips see: https://jkp-ads.com/rdb/win/winmail/Outlook/tips.htm Dim OutApp As Object Dim OutMail As Object Dim Fname As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) 'File path/name of the gif file Fname = Environ$("temp") & "\My_Sales2.gif" 'Save Chart sheet named "Chart1" as gif file ActiveWorkbook.Sheets("Chart1").Export _ Filename:=Fname, FilterName:="GIF" On Error Resume Next With OutMail .To = "ron@debruin.nl" .CC = "" .BCC = "" .Subject = "This is the Subject line" .Body = "Hi there" .Attachments.Add Fname .Send 'or use .Display End With On Error GoTo 0 'Delete the gif file Kill Fname Set OutMail = Nothing Set OutApp = Nothing End Sub
If you want to use the Intellisense help showing you the properties and
methods of the objects as you
type you can use Early Binding.
Bit faster also when you run your code but you can have problems when you
distribute your workbooks. Excel will automatic update the reference number
to Outlook when you open your workbook in a higher version of Excel/Outlook
but not update it when you open it in a lower version of Excel/Outlook. With
Late Binding as I used in the macro examples you not have
this problem.
Add a reference to the Microsoft Outlook Library in
Excel
1) Go to the VBA editor with the shortcut
Alt - F11
2) Click on
Tools>References in the Menu bar
3) Place a
Checkmark before Microsoft Outlook ? Object Library
Where ? is the Outlook version number
Then replace
this three lines in the code
Dim OutApp As
Object
Dim OutMail As Object
Set OutMail = OutApp.CreateItem(0)
With this three lines
Dim OutApp As
Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutMail =
OutApp.CreateItem(olMailItem)