Excel用宏实现数据根据条件通过邮件发给指定的人

Excel小菜鸟求大神教学,怎么实现用宏做一个command button,然后点击这个common button,所有数据都会根据条件发给指定的人?就是在这个sheet里面,所有status不是Closed的数据都会发给相对应的Assignee,比如点击一下button所有Assignee是YuYuan Ding的而且status不是Closed的跟YuYuan Ding有关的数据就会整理好然后通过一个邮件发给YuYuan Ding(邮件地址就是YuYuan Ding)然后Assignee是Xiao Ming的而且status不为Closed的关于Xiao Ming的数据整理好就会自动发给Xiao Ming(地址就是Xiao Ming),现在我只会做到根据条件发邮件给指定的人,但是不会在邮件里添加一个Excel的file,里面包含关于相对应那个人(比如YuYuan Ding)的数据(status为close的数据除外),以下是我打的代码,求大神教教我吧,谢谢
Sub Email()
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range

Sheets("Sheet2").Select

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
For Each cell In Columns("G").Cells.SpecialCells(xlCellTypeConstants)
If (Cells(cell.Row, "C").Value) <> "Closed" Then

Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Please looking ofr these defects"
.Body = "Dear " & Cells(cell.Row, "G").Value _
& vbNewLine & vbNewLine & _
"These are the defects for Claims Digi."

End With
On Error GoTo 0
Set OutMail = Nothing
End If
Next cell

cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

第1个回答  2015-06-10
将制定的内容发送给制定的人 可通过for循环来写
设计思路是需要参考数据源
欢迎入群交流:192511936
发送的代码如下:
Dim mail As New CDO.Message
mail.From = "设置发信人的邮箱"
mail.To = "设置收信人的邮箱"
mail.Subject = "设定邮件的主题"
mail.AddAttachment "附件"
stUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With mail.Configuration.Fields
.Item(stUl & "smtpserver") = "smtp.163.com" 'SMTP服务器地址
.Item(stUl & "smtpserverport") = 25 'SMTP服务器端口
.Item(stUl & "sendusing") = 25 '发送端口
.Item(stUl & "smtpauthenticate") = 1 '需要提供用户名和密码,0是不提供 '
.Item(stUl & "sendusername") = "发信人的邮箱ID"
.Item(stUl & "sendpassword") = "密码"
.Update
End With
mail.Send '发送
Set mail = Nothing '释放对象本回答被网友采纳
第2个回答  2015-06-10
算了。。。
第3个回答  推荐于2016-06-01
一、建立亲友通讯录
  在工作表中建立一个包含不同收件人、主题、内容和附件的亲友通讯录。
二、使用宏实现自动发送电子邮件
  打开“工具→宏→Visual Basic编辑器”,单击“插入→模块”插入一个模块,在“工程”窗口中双击插入的模块,打开它的代码窗口,并输入以下宏:
  Sub 全自动发送邮件()
  "要能正确发送并需要对Microseft Outlook进行有效配置
  On Error Resume Next
  Dim rowCount, endRowNo
  Dim objOutlook As New Outlook.Application
  Dim objMail As MailItem
  "取得当前工作表与Cells(1,1)相连的数据区行数
  endRowNo = Cells(1, 1).CurrentRegion.Rows.Count
  "创建objOutlook为Outlook应用程序对象
  Set objOutlook = New Outlook.Application
  "开始循环发送电子邮件
  For rowCount = 2 To endRowNo
  "创建objMail为一个邮件对象
  Set objMail = objOutlook.CreateItem(olMailItem)
  With objMail
  "设置收件人地址(从通讯录表的“E-mail地址”字段中获得)
  .To = Cells(rowCount, 2)
  "设置邮件主题
  .Subject ="新年好![来自朋友弗人的问候] "
  "设置邮件内容(从通讯录表的“内容”字段中获得)
  .Body = Cells(rowCount, 3)
  "设置附件(从通讯录表的“附件”字段中获得)
  .Attachments.Add Cells(rowCount, 4)
  "自动发送邮件
  .Send
  End With
  "销毁objMail对象
  Set objMail = Nothing
  Next
  "销毁objOutlook对象
  Set objOutlook = Nothing
  "所有电子邮件发送完成时提示
  MsgBox rowCount-1
相似回答