excel学习库

excel表格_excel函数公式大全_execl从入门到精通

利用VBA发送EXCEL指定行内容的电子邮件

大家好,我们今日讲解“利用VBA发送EXCEL指定行内容的电子邮件”,这节内容是“VBA信息获取与处理”教程中第五个专题“利用VBA发送电子邮件”的第二节。 第二节 利用VBA发送EXCEL指定行内容的电子邮件 在上一讲中我们讲了发送带附件的电子邮件,我们这讲的内容是讲解如何发送工作表的指定内容给各个邮箱,上一讲虽然也讲了发送工作表指定区域的选择,但这个区域要求是连续的,对于非连续的区域该如何处理呢?这讲我将给出一个可以利用的方案。如下图:上述表格是“VBA职业教育网络公社”职工的工资名单,要把这些名单单独的发送给后面的邮箱地址,这些地址在示例中我给出的是一个值,大家在实际利用时可以设置。如何做到这项工作呢? 1 邮件发送工作表不连续区域内容的思路分析 为了实现我们刚才提到的目的,我们先把整个工资表放在一个工作表内,然后建立一个新的工作表,如下:然后我们将工资表内的内容按照需要拷贝到这个单独的工作表内,实现邮件的发送即可。代码同样可以借鉴上一讲的代码,这也是我的积木编程思想。 2 邮件发送工作表不连续区域内容的代码实现 为了完成上述的思路,我们可以利用下面的代码,大家要注意本专题的代码请参考:“005工作表.xlsm”程序文件,由于这部教程是VBA的提高篇,在讲解的时候我侧重的是思路分析,具体的实现大家要仔细的理解。 我们看下面的代码: Sub myNZA() Dim myArray As Variant Sheets("Sheet3").Select '关闭屏幕刷新及事件的反复触发 Application.ScreenUpdating = False Application.EnableEvents = False '将工资表预读到数组 myArray = Sheets("工资表").Range("a1").CurrentRegion For i = 3 To UBound(myArray) '将数组的值拆分后写到工作表中 Range("a3:i3") = Application.Index(myArray, i) '选择要发送给职工的工资条内容 Range("A1:H3").Select '放出标题注释 ActiveWorkbook.EnvelopeVisible = True '邮件设置 With ActiveSheet.MailEnvelope strText = myArray(i, 1) & "您好:" & vbCrLf & "以下是您" & _ myArray(i, 2) & "月份工资明细,请查收!" '设置添加的可选介绍字段文本到电子邮件正文,标题设置注释 .Introduction = strText With .Item .To = myArray(i, 9) .Subject = myArray(i, 2) & "月份工资明细" .Send End With End With Next ActiveWorkbook.EnvelopeVisible = False Application.ScreenUpdating = True Application.EnableEvents = True MsgBox "OK!" End Sub 代码的截图: 3 VBA代码实现过程的讲解 1) myArray = Sheets("工资表").Range("a1").CurrentRegion 这个语句是实现将工资表预存到数组中,从而实现更快的读取数据的效果。 2)Range("a3:i3") = Application.Index(myArray, i) 这行语句实现将数组中的值按行读到发送邮件的工作表中,注意上面语句的写法Index(myArray, i),不清楚的可以参考我的第三套教程《VBA数组与字典解决方案》中的知识点讲解 3)Range("A1:H3").Select 这行语句是邮件发送内容的设定,将在邮件的正文部分体现。 4).Subject = myArray(i, 2) & "月份工资明细" 这行语句是邮件题目的内容。 5)With ActiveSheet.MailEnvelope strText = myArray(i, 1) & "您好:" & vbCrLf & "以下是您" & _ myArray(i, 2) & "月份工资明细,请查收!" '设置添加的可选介绍字段文本到电子邮件正文,标题设置注释 .Introduction = strText With .Item .To = myArray(i, 9) .Subject = myArray(i, 2) & "月份工资明细" .Send End With End With 上面的这段代码完成了邮件的设置及发送。 6)For i = 3 To UBound(myArray) …….. Next 以上语句是让for next的循环体部分多次循环以达到给每个人发送邮件的目的。 对于其他的语句的不不再详细的讲解了,在上一讲有涉及。 4 VBA代码实现效果 最后我们看看代码的实现效果,点击:最后我们看工作表界面和邮件的接收界面: 工作表界面:邮件接收界面:以上完全达到了我们最初的要求,但要注意在发送邮件的时候OUTLOOK要处于打开的状态。 本节知识点回向:如何实现将工作表不连续区域内容的发送电子邮件?如何实现多个电子邮件的自动发送? 本专题参考程序文件:005工作表.XLSMVBA是利用Office实现自己小型办公自动化的有效手段,这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!学习VBA是个过程,也需要经历一种枯燥的感觉,如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。 “水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。 我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程。 第一套:VBA代码解决方案是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备; 第二套:VBA数据库解决方案数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。 第三套:VBA数组与字典解决方案数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。 第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。 第五套:VBA中类的解读和利用是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。 第六套教程:《VBA信息获取与处理》是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。如需要可以可以WeChat: NZ9668 学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,大家可以根据以上资料1,3,2,6,5或者是4,3,2,6,5的顺序逐渐深入的逐渐学习。每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着: 浮云掠过,暗语无声, 唯有清风,惊了梦中啼莺。 望星,疏移北斗, 奈将往事雁同行。 阡陌人,昏灯明暗, 忍顾长亭。 多少VBA人, 暗夜中,悄声寻梦,盼却天明。 怎无凭! 分享成果,随喜正能量

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接