版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Excel 和outlook 结合自己制作出可以群发工资的程序,然后通过HTML语言实现排版的表格化。首先是实现EXCLE 中VB 自动调用OUTLOOK 的语句,举一反三。1 .准备通过以下是通过HTML 做的一个表格的部分,具体的数据项则通过VB 来索引实现。效果如下你好=1=,下面是你2月份的<font color="red"><b>工资</b></font>,明细如下:<table align="center" width="500" height="25&quo
2、t; border=1 bordercolor="#000000"><tbody><tr><td colspan="4" align="center"> 工资表 </td></tr><tr><td width="25%" height="25">薪酬等级 </td><td width="25%" height="25">=2= </td&
3、gt;<td width="25%" height="25">稿费、其它 </td><td width="25%" height="25">=3= </td></tr><tr><td width="25%" height="25">薪档 </td><td width="25%" height="25">=4= </td>
4、;<td width="25%" height="25">岗位津贴 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">基本工资 </td><td width="25%" height="25">=4= </td>
5、<td width="25%" height="25">应发合计 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">岗位工资 </td><td width="25%" height="25">=4= </td>&
6、lt;td width="25%" height="25">扣公积金 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">补贴 </td><td width="25%" height="25">=4= </td><
7、td width="25%" height="25">扣统筹保险 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">工龄工资 </td><td width="25%" height="25">=4= </td><
8、td width="25%" height="25">扣医疗保险 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">特补、独子 </td><td width="25%" height="25">=4= </td><
9、;td width="25%" height="25">扣失业保险 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">加班费 </td><td width="25%" height="25">=4= </td><
10、td width="25%" height="25">计税工资 </td><td width="25%" height="25">=6= </td></tr><tr><td width="25%" height="25">事假等扣款 </td><td width="25%" height="25">=4= </td><
11、td width="25%" height="25">扣税金 </td><td width="25%" height="25">=6= </td></tr><tr><td colspan="2" align="center" width="50%" height="25">实发合计 </td><td colspan="2"
12、 align="center" width="50%" height="25">=4= </td></tr></tbody></table>,感谢你的辛勤工作。准备待发送的数据:a.) 打开Excel,新建Book1.xlsxb.) 填入下面的内容,第一列:接收人,第二列:邮件标题,第三列:正文,第四列:附件路径注意:附件路径中可以有中文,但是不能有空格这里你可以写更多内容,每一行作为一封邮件发出。注意:邮件正文是黑白文本内容,不支持加粗、字体颜色等。(如果你需要支持彩色的邮件,后
13、面将会给出解决办法)2. 编写宏发送邮件a.) Alt + F11 打开宏编辑器,菜单中选:插入->模块b.) 将下面的代码粘贴到模块代码编辑器中:代码list-1vb view plaincopyprint?1. Public Declare Function SetTimer Lib "user32" _ 2. (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long 3. Public Declare Functio
14、n KillTimer Lib "user32" _ 4. (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long 5. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 6.7.8.9. Function WinProcA(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysTime As Long) As Long 1
15、0. KillTimer 0, idEvent 11. DoEvents 12. Sleep 100 13. '使用Alt+S发送邮件,这是本文的关键之处,免安全提示自动发送邮件全靠它了 14. Application.SendKeys "%s" 15. End Function 16.17.18. ' 发送单个邮件的子程序 19. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal attachement As String) 2
16、0. Dim objOL As Object 21. Dim itmNewMail As Object 22. '引用Microsoft Outlook 对象 23. Set objOL = CreateObject("Outlook.Application") 24. Set itmNewMail = objOL.CreateItem(olMailItem) 25. With itmNewMail 26. .subject = subject '主旨 27. .body = body '正文本文 28. .To = to_who '收件者
17、29. .Attachments.Add attachement '附件,如果你不需要发送附件,可以把这一句删掉即可,Excel中的第四列留空,不能删哦 30. .Display '启动Outlook发送窗口 31. SetTimer 0, 0, 0, AddressOf WinProcA 32. End With 33. Set objOL = Nothing 34. Set itmNewMail = Nothing 35. End Sub 36.37.38.39.40. '批量发送邮件 41. Sub BatchSendMail() 42. Dim rowCount
18、, endRowNo 43. endRowNo = Cells(1, 1). 44. '逐行发送邮件 45. For rowCount = 1 To endRowNo 46. SendMail Cells(rowCount, 1), Cells(rowCount, 2), Cells(rowCount, 3), Cells(rowCount, 4) 47. Next 48. End Sub Public Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEvent As Lo
19、ng, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As LongPublic Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEvent As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Function WinProcA(ByVal hwnd As Long, ByVal uMs
20、g As Long, ByVal idEvent As Long, ByVal SysTime As Long) As Long KillTimer 0, idEvent DoEvents Sleep 100 '使用Alt+S发送邮件,这是本文的关键之处,免安全提示自动发送邮件全靠它了 Application.SendKeys "%s"End Function' 发送单个邮件的子程序Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal
21、 attachement As String) Dim objOL As Object Dim itmNewMail As Object '引用Microsoft Outlook 对象 Set objOL = CreateObject("Outlook.Application") Set itmNewMail = objOL.CreateItem(olMailItem) With itmNewMail .subject = subject '主旨 .body = body '正文本文 .To = to_who '收件者 .Attachment
22、s.Add attachement '附件,如果你不需要发送附件,可以把这一句删掉即可,Excel中的第四列留空,不能删哦 .Display '启动Outlook发送窗口 SetTimer 0, 0, 0, AddressOf WinProcA End With Set objOL = Nothing Set itmNewMail = NothingEnd Sub'批量发送邮件Sub BatchSendMail() Dim rowCount, endRowNo '逐行发送邮件 For rowCount = 1 To endRowNo SendMail Cells
23、(rowCount, 1), Cells(rowCount, 2), Cells(rowCount, 3), Cells(rowCount, 4) NextEnd Sub最终代码编辑器中的效果如下图:i为了正确执行代码,你还需要在菜单中选择: 工具->引用 中的Microseft Outlook X.0 Object Library 勾选上 (X.0是版本号,不同机器可能不一样)c.) 粘贴好代码、勾选上上面的东东后可以发送邮件了,点击上图A红圈所示的绿色三角按钮,会弹出下图所示的对话框,点运行,就开始批量发送邮件了。d.) 如果你想确认你的邮件是否都发出去了,可以去Outlook的“已
24、发送邮件”文件夹中查看,是否有你希望发出的邮件,如果有,恭喜你,收工-下面讲解1. 如何发送彩色的邮件2. 如何替换正文中的部分内容,例如,每一封邮件中可能最开始的称呼不同,给对方报出的数字不同等3. 如何发送多附件-1. 如何发送彩色邮件发送彩色邮件需要两步,第一步:上面的代码需要改一句(红色加粗文本,body改成HTMLBody):代码list-2vb view plaincopyprint?1. ' 发送单个邮件的子程序 2. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As S
25、tring, ByVal attachement As String) 3. Dim objOL As Object 4. Dim itmNewMail As Object 5. '引用Microsoft Outlook 对象 6. Set objOL = CreateObject("Outlook.Application") 7. Set itmNewMail = objOL.CreateItem(olMailItem) 8. With itmNewMail 9. .subject = subject '主旨 10. ' 11. .HTMLbody
26、 = body '正文本文,仅仅这一行跟前面不同,其余都是一样的哦 12. ' 13. .To = to_who '收件者 14. .Attachments.Add attachement '附件 15. .Display '启动Outlook发送窗口 16. SetTimer 0, 0, 0, AddressOf WinProcA 17. End With Set objOL = Nothing 18. Set itmNewMail = NothingEnd Sub ' 发送单个邮件的子程序Sub SendMail(ByVal to_who A
27、s String, ByVal subject As String, ByVal body As String, ByVal attachement As String) Dim objOL As Object Dim itmNewMail As Object '引用Microsoft Outlook 对象 Set objOL = CreateObject("Outlook.Application") Set itmNewMail = objOL.CreateItem(olMailItem) With itmNewMail .subject = subject
28、39;主旨 ' .HTMLbody = body '正文本文,仅仅这一行跟前面不同,其余都是一样的哦 ' .To = to_who '收件者 .Attachments.Add attachement '附件 .Display '启动Outlook发送窗口 SetTimer 0, 0, 0, AddressOf WinProcA End With Set objOL = Nothing Set itmNewMail = NothingEnd Sub第二步:修改excel第三列(C列)的内容,这需要你懂一点点HTML语言例如,希望在邮件中将“报税单”
29、三个字变红,加粗,则将第三列的内容修改为:您好,下面是这一周的<font color="red"><b>报税单</b></font>,最终效果如图:去发件箱里看看效果吧:注意:在Excel里面编辑正文,进行加粗、加颜色的操作不会生效哦。必须用HTML自己来 2. 如何替换正文部分内容分两步:1. 换Excel内容2. 换代码1. 换Excel内容:将变化的部分用=xxxx=这样的形式替换掉。注意:中间没有空格。例如上图,数字=1=会被E列的内容替换掉,=2=会被F列的内容替换掉,依此类推,如果有更多,就添加更多列,=3=, =
30、4=等等。2. 换代码,将 "批量发送邮件"这一段程序完全替换成下面的代码:vb view plaincopyprint?1. '批量发送邮件 2. Sub BatchSendMail() 3. Dim rowCount, endRowNo 4. Dim newBody 5. Dim replaceCount, maxReplaceCount 6. Dim pattern 7. endRowNo = Cells(1, 1). 8.9. '逐行发送邮件 10. For rowCount = 1 To endRowNo 11. ' 替换当前行模板内容 1
31、2. maxReplaceCount = 2 ' 有几处替换就写几,例子中有两处,就写2 13. newBody = Cells(rowCount, 3) 14.15. For replaceCount = 1 To maxReplaceCount 16. pattern = "=" & CStr(replaceCount) & "=" 17. newBody = WorksheetFunction.Substitute(newBody, pattern, Cells(rowCount, 4 + replaceCount) 18.
32、 Next 19. ' 替换好了,发邮件咯! 20. SendMail Cells(rowCount, 1), Cells(rowCount, 2), newBody, Cells(rowCount, 4) 21.22. Next 23. End Sub '批量发送邮件Sub BatchSendMail() Dim rowCount, endRowNo Dim newBody Dim replaceCount, maxReplaceCount Dim pattern '逐行发送邮件 For rowCount = 1 To endRowNo ' 替换当前行模板内容
33、 maxReplaceCount = 2 ' 有几处替换就写几,例子中有两处,就写2 newBody = Cells(rowCount, 3) For replaceCount = 1 To maxReplaceCount pattern = "=" & CStr(replaceCount) & "=" newBody = WorksheetFunction.Substitute(newBody, pattern, Cells(rowCount, 4 + replaceCount) Next ' 替换好了,发邮件咯! Se
34、ndMail Cells(rowCount, 1), Cells(rowCount, 2), newBody, Cells(rowCount, 4) NextEnd Sub注意:上面“maxReplaceCount = 2"这一行代码,2需要改成你自己的值,替换几个地方就写几(新添加了几个列就写几)上面添加了E、F两列,就是2,如果你添加了3处替换(E、F、G列),就写3.不过,对于需要重复替换的内容,不需要添加新列,例如,大话西游在邮件中出现了两次,可以重复使用=2=来代表。3. 如何发送多附件在实际应用场景中可能需要发送多封附件,其实很简单,将SendMail子程序修改成下面的样
35、子即可:vb view plaincopyprint?1. ' 发送单个邮件的子程序 2. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal attachement As String) 3. Dim objOL As Object 4. Dim itmNewMail As Object 5. Dim attaches 6. Dim attach 7.8. '引用Microsoft Outlook 对象 9. Set objOL = CreateOb
36、ject("Outlook.Application") 10. Set itmNewMail = objOL.CreateItem(olMailItem) 11. With itmNewMail 12. .subject = subject '主旨 13. .HTMLbody = body '正文本文 14. .To = to_who '收件者 15. .Display '启动Outlook发送窗口 16. attaches = Split(attachement, "") 17.18. For Each attach I
37、n attaches 19. If (Len(attach) > 0) Then 20. .Attachments.Add attach 21. End If 22. Next 23. SetTimer 0, 0, 0, AddressOf WinProcA 24. End With 25.26. Set objOL = Nothing 27. Set itmNewMail = Nothing 28. End Sub ' 发送单个邮件的子程序Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal bo
38、dy As String, ByVal attachement As String) Dim objOL As Object Dim itmNewMail As Object Dim attaches Dim attach '引用Microsoft Outlook 对象 Set objOL = CreateObject("Outlook.Application") Set itmNewMail = objOL.CreateItem(olMailItem) With itmNewMail .subject = subject '主旨 .HTMLbody = b
39、ody '正文本文 .To = to_who '收件者 .Display '启动Outlook发送窗口 attaches = Split(attachement, "") For Each attach In attaches If (Len(attach) > 0) Then .Attachments.Add attach End If Next SetTimer 0, 0, 0, AddressOf WinProcA End With Set objOL = Nothing Set itmNewMail = NothingEnd Sub在E
40、xcel的附件列(第三列),多个附件用半角的分号分隔开(是”;",不是”;“),例如:c:doc毕业证书附件.jpg;c:doc校方证明书.docx最终代码如下:汇总了批量替换、彩色邮件、多附件功能vb view plaincopyprint?1. Public Declare Function SetTimer Lib "user32" _ 2. (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long 3. Pub
41、lic Declare Function KillTimer Lib "user32" _ 4. (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long 5. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 6.7.8.9.10. Function WinProcA(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysT
42、ime As Long) As Long 11. KillTimer 0, idEvent 12. DoEvents 13. Sleep 100 14. '使用Alt+S发送邮件,这是本文的关键之处,免安全提示自动发送邮件全靠它了 15. Application.SendKeys "%s" 16. End Function 17.18.19. ' 发送单个邮件的子程序 20. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal at
43、tachement As String) 21. Dim objOL As Object 22. Dim itmNewMail As Object 23. Dim attaches 24. Dim attach 25.26. '引用Microsoft Outlook 对象 27. Set objOL = CreateObject("Outlook.Application") 28. Set itmNewMail = objOL.CreateItem(olMailItem) 29. With itmNewMail 30. .subject = subject '
44、;主旨 31. .HTMLbody = body '正文本文 32. .To = to_who '收件者 33. .Display '启动Outlook发送窗口 34. attaches = Split(attachement, "") 35.36. For Each attach In attaches 37. If (Len(attach) > 0) Then 38. .Attachments.Add attach 39. End If 40. Next 41. SetTimer 0, 0, 0, AddressOf WinProcA 42
45、. End With 43.44.45.46.47. Set objOL = Nothing 48. Set itmNewMail = Nothing 49. End Sub 50.51.52.53. '批量发送邮件 54. Sub BatchSendMail() 55. Dim rowCount, endRowNo 56. Dim newBody 57. Dim replaceCount, maxReplaceCount 58. Dim pattern 59. endRowNo = Cells(1, 1). 60.61. '逐行发送邮件 62. For rowCount =
46、1 To endRowNo 63. ' 替换当前行模板内容 64. maxReplaceCount = 2 ' 有几处替换就写几,例子中有两处,就写2 65. newBody = Cells(rowCount, 3) 66.67. For replaceCount = 1 To maxReplaceCount 68. pattern = "=" & CStr(replaceCount) & "=" 69. newBody = WorksheetFunction.Substitute(newBody, pattern, Ce
47、lls(rowCount, 4 + replaceCount) 70. Next 71. ' 替换好了,发邮件咯! 72. SendMail Cells(rowCount, 1), Cells(rowCount, 2), newBody, Cells(rowCount, 4) 73.74. Next 75. End SubPublic Declare Function SetTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As LongPublic Declare Function KillTimer Lib "user32" _ (ByVal hwnd As Long, ByVal nIDEven
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理部健康宣教汇报
- 护理呼吸系统护理培训计划表
- final-title=南京初三语文2026年中考二模模拟卷B卷含参考答案逐题解析评分细则与学生作答空间VIP标准卷第1组|0529Org010;title-commitments=一、标题必须直接承诺初三语文2026年中考二模模拟卷可交付
- 2026气田公司面试题及答案
- 2026渠道维护面试题及答案
- 2026燃料管理岗面试题及答案
- 2026市场督导面试题及答案
- 2026年中国专利奖高校获奖分析报告(第22-26届)
- 机关档案整 理保管岗事业单位招聘考试参考题库 含答案
- 2026屯溪国企面试题型及答案
- 山东省潍坊市2024-2025学年高二下学期期末考试政治试题(含答案)
- 重症超声在ECMO治疗中的应用
- 泡沫箱公司管理制度
- 2025年1月国家开放大学汉语言文学本科《外国文学专题》期末纸质考试试题及答案
- 轧钢机械装备及其智能化技术 课件 第7章 剪切机
- 04S520埋地塑料排水管道施工标准图集
- 锅炉更换烟管安装施工方案
- 安徽大学《数据结构与算法》2023-2024学年第一学期期末试卷
- 中建企业定额数据库(劳务分包库)
- 四川省成都市第十一中学2024-2025学年高一上学期入学分班质量检测数学试题(原卷版)
- 《蚂蚁和西瓜》少儿美术绘画课件创意教程教案
评论
0/150
提交评论