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

Excel小菜鸟求大神教学,怎么实现用宏做一个commandbutton,然后点击这个commonbutton,所有数据都会根据条件发给指定的人?就是在这个sheet里面... 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
展开
 我来答
nb...9@163.com
2015-06-10 · TA获得超过362个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:199万
展开全部
将制定的内容发送给制定的人 可通过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 '释放对象
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1af404
2015-06-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.1万
采纳率:59%
帮助的人:4074万
展开全部
算了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绿衣人敲门
推荐于2016-06-01 · 知道合伙人软件行家
绿衣人敲门
知道合伙人软件行家
采纳数:18765 获赞数:63778
毕业于西北大学计算机网络技术专业,现在在西安电力学院进行网络推广维护工作!

向TA提问 私信TA
展开全部
一、建立亲友通讯录
  在工作表中建立一个包含不同收件人、主题、内容和附件的亲友通讯录。
二、使用宏实现自动发送电子邮件
  打开“工具→宏→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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式