通过电子邮件发送选择从Excel作为附件
我使用这个宏发送工作簿作为附件(Book1.xlsx)通过电子邮件发送选择从Excel作为附件
Sub Macro2_SendByEMail()
' Copy the sheet(1)
ThisWorkbook.Sheets(1).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=Array("[email protected]", "[email protected]"), Subject:="Addresses [" & Format(Date, "dd/mm/yy") & "]"
.Close SaveChanges:=False
End With
End Sub
但我不能找出如何修改代码,使我只发工作簿的前三列 ...
感谢您的帮助!
你可以试试这个:
Option Explicit
Sub Macro2_SendByEMail()
' Copy the sheet(1)
Dim my_range As Range
Dim l_row As Long
l_row = ThisWorkbook.Sheets(1).UsedRange.Rows.Count
With ThisWorkbook.Sheets(1)
Set my_range = .Range(.Cells(1, 1), .Cells(l_row, 3))
End With
my_range.Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=Array("[email protected]", "[email protected]"), Subject:="Addresses [" & Format(Date, "dd/mm/yy") & "]"
.Close SaveChanges:=False
End With
End Sub
的想法是,你把使用范围的最后一行中的第一张,并在此基础上,你定义选择复制。
不幸的是,这不起作用。我认为问题出在'发送电子邮件部分,仍然存在'使用ActiveWorkbook',因为它可能应该是类似于“使用ActiveSelection”另外我不介意该范围是否是整个3列... – teaspoon
[ 'SendMail'](https://msdn.microsoft.com/en-us/library/office/ff821053.aspx)是一个Workbook对象方法,它使用已安装的邮件系统_发送工作簿。所以你只能用它来发送整个工作簿。否则,你将不得不使用Outlook对象模型 – user3598756
可能是,我只是做了一个vba代码,选择了前3列,没有照顾其余的,因为我没有在这里设置前景。 – Vityata
认为您需要使用电子邮件库,大概是Outlook,并构建邮件的'.Body'。 –