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 展开
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 展开
展开全部
将制定的内容发送给制定的人 可通过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 '释放对象
设计思路是需要参考数据源
欢迎入群交流: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 '释放对象
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
算了。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于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
在工作表中建立一个包含不同收件人、主题、内容和附件的亲友通讯录。
二、使用宏实现自动发送电子邮件
打开“工具→宏→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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询