将工作簿中的文件和图表附加到excel vba创建的电子邮件中

将工作簿中的文件和图表附加到excel vba创建的电子邮件中,excel,vba,outlook,Excel,Vba,Outlook,我不是先进的Excel vba,但做了迄今为止使用这个网站 因此,我设法创建了我想发送电子邮件的表格,并创建了我想发送给读者的电子邮件,但我一直在思考如何将图表附加为图片(我已经在将要发送的工作簿的新工作表上创建了图片),并将相同的Excel工作簿附加到电子邮件,以完成电子邮件并准备发送 这就是我取得的成绩: Sub LFL_makrosu() 'select&copy&paste from sheet to another 'find last row on sheet

我不是先进的Excel vba,但做了迄今为止使用这个网站

因此,我设法创建了我想发送电子邮件的表格,并创建了我想发送给读者的电子邮件,但我一直在思考如何将图表附加为图片(我已经在将要发送的工作簿的新工作表上创建了图片),并将相同的Excel工作簿附加到电子邮件,以完成电子邮件并准备发送

这就是我取得的成绩:

Sub LFL_makrosu()

'select&copy&paste from sheet to another

'find last row  on sheet

    Dim lRow As Long
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'first copy&paste

    Sheets("Sheet1").Select
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'USE CORRECT CELLS ON BELOW CODE

    Range("A2:B" & lRow).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("Sheet4").Select

'USE CORRECT CELLS ON BELOW CODE

    Range("A2").Select
    ActiveSheet.Paste

'second copy&paste

    Sheets("Sheet2").Select
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'USE CORRECT CELLS ON BELOW CODE

    Range("A2:B" & lRow).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet4").Select
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'USE CORRECT CELLS ON BELOW CODE

    Range("A" & lRow + 2).Select
    ActiveSheet.Paste

'third copy&paste

    Sheets("Sheet3").Select
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'USE CORRECT CELLS ON BELOW CODE

    Range("A2:B" & lRow).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet4").Select
    lRow = Cells(Rows.Count, 1).End(xlUp).Row

'USE CORRECT CELLS ON BELOW CODE

    Range("A" & lRow + 2).Select
    ActiveSheet.Paste

'create the table and email

    Call Snapshotandsendmail

    End Sub

Sub Snapshotandsendmail()
' Snapshot Macro

     Dim lRow As Long
     lRow = Cells(Rows.Count, 1).End(xlUp).Row

'start creating mail and the table as picture

     Dim wb As ThisWorkbook
     Set wb = ThisWorkbook

     Dim ws As Worksheet
     Set ws = wb.Sheets("Sheet4")

     Dim rng  As Range
     Set rng = ws.Range("A2:D18")
     rng.CopyPicture

     Dim CH As Chart
     Set CH = Charts.Add

     CH.Location xlLocationAsObject, "Sheet4"
     Set CH = ActiveChart
     ActiveChart.Parent.Name = "Final_Tablo"
     ActiveSheet.ChartObjects("Final_Tablo").Height = rng.Height
     ActiveSheet.ChartObjects("Final_Tablo").Width = rng.Width
     rng.CopyPicture xlScreen, xlBitmap
     CH.Paste

     Call sendemail

End Sub

Sub sendemail()

'create the email on outlook

     Dim olook As Outlook.Application
     Set olook = New Outlook.Application
     Dim omail As Outlook.MailItem
     Set omail = olook.CreateItem(olMailItem)

     With omail
     .Display
     End With
     Signature = omail.HTMLBody

     Dim fldName1 As String
     fldName1 = Path & Gun & ".xlsx"

'creates the  message on the Email from given date to today - 2

     With omail
     .To = "deniz.beser@koctas.com.tr"
     .CC = "deniz.beser@koctas.com.tr"
     .Subject = "LFL Karşılaştırması"
     .HTMLBody = "<BODY style=font-size:11pt;font-family:calibri>Merhaba, <p>" & "01.01.2017 - 0" & DateAdd("d", -2, Date) & " tarih aralığını içeren; günlük LFL, Koçtaş All Stores Satış & CM & BM% ve bütçe karşılaştırmasını ekte bilgilerinize sunarız.<p>" & vbNewLine & Signature
'.Save

     .Display

'.Send

     End With

     Set omail = Nothing
     Set olook = Nothing
     Set olAtt = Nothing

End Sub
子LFL_makrosu()
'选择并从工作表复制粘贴到另一工作表
'查找工作表上的最后一行
暗淡的光线和长的一样
lRow=单元格(Rows.Count,1).结束(xlUp).行
'第一次复制和粘贴
图纸(“图纸1”)。选择
lRow=单元格(Rows.Count,1).结束(xlUp).行
'在下面的代码中使用正确的单元格
范围(“A2:B”&lRow)。选择
Selection.SpecialCells(xlCellTypeVisible)。选择
选择,复制
图纸(“图纸4”)。选择
'在下面的代码中使用正确的单元格
范围(“A2”)。选择
活动表。粘贴
'第二次复制和粘贴
图纸(“图纸2”)。选择
lRow=单元格(Rows.Count,1).结束(xlUp).行
'在下面的代码中使用正确的单元格
范围(“A2:B”&lRow)。选择
Selection.SpecialCells(xlCellTypeVisible)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸4”)。选择
lRow=单元格(Rows.Count,1).结束(xlUp).行
'在下面的代码中使用正确的单元格
范围(“A”&lRow+2)。选择
活动表。粘贴
'第三次复制和粘贴
图纸(“图纸3”)。选择
lRow=单元格(Rows.Count,1).结束(xlUp).行
'在下面的代码中使用正确的单元格
范围(“A2:B”&lRow)。选择
Selection.SpecialCells(xlCellTypeVisible)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸4”)。选择
lRow=单元格(Rows.Count,1).结束(xlUp).行
'在下面的代码中使用正确的单元格
范围(“A”&lRow+2)。选择
活动表。粘贴
'创建表并发送电子邮件
调用Snapshot和Sendmail
端接头
子快照和发送邮件()
'快照宏
暗淡的光线和长的一样
lRow=单元格(Rows.Count,1).结束(xlUp).行
'开始将邮件和表格创建为图片
将wb设置为此工作簿
设置wb=ThisWorkbook
将ws设置为工作表
设置ws=wb.Sheets(“Sheet4”)
变暗rng As范围
设置rng=ws.范围(“A2:D18”)
复制图片
模糊查斯图
设置CH=图表。添加
第四章位置对象“表4”
Set CH=ActiveChart
ActiveChart.Parent.Name=“最终表格”
ActiveSheet.ChartObjects(“最终表格”).Height=rng.Height
ActiveSheet.ChartObjects(“最终表格”).Width=rng.Width
rng.CopyPicture xlScreen,xlBitmap
醋糊
呼叫发送电子邮件
端接头
Sub-sendemail()
'在outlook上创建电子邮件
作为Outlook.Application确定
Set-olook=newoutlook.Application
将omail设置为Outlook.MailItem
设置omail=olook.CreateItem(olMailItem)
与奥马尔
.展示
以
签名=omail.HTMLBody
尺寸fldName1为字符串
fldName1=路径和枪&“.xlsx”
'在电子邮件上创建从给定日期到今天的消息-2
与奥马尔
.给丹尼斯。beser@koctas.com.tr"
.CC=“丹尼斯。beser@koctas.com.tr"
.Subject=“LFL Karşlaştırması”
.HTMLBody=“Merhaba,”和“01.01.2017-0”&DateAdd(“d”&Date)和“tarih aralııınıiıeren;günl k LFL,Koçtaş所有商店Satşe&CM&BM%ve bütşe kar laştıtıtıtıtıtımınıe Bilgilize sunarşnewp>”签名
"救命!
.展示
’发送
以
设置omail=Nothing
设置为OK=无
设置olAtt=Nothing
端接头

您可能希望获得mailItem的
Inspector.WordEditor
属性,而不是使用HTMLBody(这基本上允许您像Word文档一样与电子邮件进行交互。然后您可以
将复制的图表图片粘贴到电子邮件正文中。然后确保
保存
Excel文件并将其添加到邮件项的
附件中。