gracie1972
asked on
Code to add ranged cells from an Excel Spreadsheet in an email body
I have the code below that works great when I want to insert cells from an excel worksheet in the body of an email. However what if I want a range like in my code I have
MsgBody1 = Sheets("data").Range("M2")
How can I modify correctly to show cells in I1:J12 for example. I have tables in my data I want to include in the body of an email.
Here is my code:
MsgBody1 = Sheets("data").Range("M2")
How can I modify correctly to show cells in I1:J12 for example. I have tables in my data I want to include in the body of an email.
Here is my code:
Function DistributeDailyConcept()
'Declare variables
Dim MyFilePath As String
Dim SavePDFas As String
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem '<-- Early binding
Dim EmailAddress As String
Dim EmailSubject As String
Dim MsgBody1 As String
Dim MsgBody2 As String
Dim ShipDate As String
Dim wkb As Workbook
'Dim xlApp As Excel.Application
Excel.Application.Quit
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open "C:\Share\Daily Sales\Daily Sales Report by Concept JOM.xlsx", True, False
Excel.Application.ScreenUpdating = False
Excel.Application.DisplayAlerts = False
xlApp.DisplayAlerts = False
'Create Outlook object
Set OutlookApp = New Outlook.Application
'Specify email address and email subject
EmailAddress = "angela.mXXXXXX@XXXXXX.com"
'EmailAddress = "rick.wXXXXXX@XXXXX.com"
EmailSubject = "Daily Sales Report by Concept JOM"
'Build parts of name of PDF file
MyFilePath = "C:\Share\Daily Sales"
strFile = Dir(MyFilePath & "\Daily Sales Report by Concept JOM.xlsx")
'MyFileName = strFile
Set wkb = Excel.Workbooks.Open(MyFilePath & "\" & strFile)
'Specify email message
MsgIntro = "Please find the Daily Sales Report by Concept JOM. "
MsgBody1 = Sheets("data").Range("M2")
MsgBody2 = Sheets("data").Range("M3")
MsgFile = "File with all account detail is also saved at C:\Share\Daily Sales\Daily Sales Report by Concept JOM.xlsx"
MsgEnd = "If you have any questions, please let us know...Kind Regards, NAM DTC Finance"
ShipDate = Sheets("Data").Range("GR")
SavePDFas = "C:\Share\Daily Sales\Daily Sales Report by Concept JOM " & ShipDate & ".pdf"
'process the data in the workbook here
'Save Transaction Form as PDF file in same directory as this
'Excel workbook
wkb.Save
wkb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
SavePDFas, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Excel.Application.ActiveWorkbook.Save
wkb.Close
Excel.Application.Quit
xlApp.Quit
'Send out the email
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.To = EmailAddress
.Subject = EmailSubject & " " & ShipDate
.Body = MsgIntro & Chr(10) & Chr(10) & MsgBody1 & Chr(10) & Chr(10) & MsgBody2 & Chr(10) & Chr(10) & MsgFile & Chr(10) & Chr(10) & MsgEnd
.Attachments.Add SavePDFas
.Send
End With
'House cleaning
Set OutlookApp = Nothing
Set xlApp = Nothing
Set XLWbk = Nothing
Set XLSht = Nothing
End Function
ASKER
@ Rey I get a type mismatch error when I try that.
what is the content of I1:J12 ?
upload a copy of the excel file
upload a copy of the excel file
The issue is that, to do multiple "rows",... you need some sort of carriage return/Line feed to actually insert a range into a text email message body (text or HTML)
My guess is that you will have to find a way to insert this range as a table...
...but, lets see what Rey or the other experts will post
JeffCoachman
My guess is that you will have to find a way to insert this range as a table...
...but, lets see what Rey or the other experts will post
JeffCoachman
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I cant it is our daily sales template.
It is just a table with linked data from another sheet. Might be too complicated for what I need.
It is just a table with linked data from another sheet. Might be too complicated for what I need.
ASKER
Thanks Jeffrey I will try that.
ASKER
That worked perfect.
Any idea as to why the SaveASPDF is not working (This code worked on another project where I only had 1 sheet)? I have multiple sheets and I only want to save and convert one of the sheets to PDF and attach to email.
Or should I open another question?
Any idea as to why the SaveASPDF is not working (This code worked on another project where I only had 1 sheet)? I have multiple sheets and I only want to save and convert one of the sheets to PDF and attach to email.
Or should I open another question?
I actually tested my snippet in a modified version of your code, and the PDF was created just fine.
It would be best if you posted another question for the PDF issue.
JeffCoachman
It would be best if you posted another question for the PDF issue.
JeffCoachman
MsgBody1 = Sheets("data").Range("I1:J