分享

写一句VBA代码,让Excel自动发邮件~

 F2967527 2022-03-23
嗨,大家好,我是星光。

今天给大家聊一下如何用Excel自动发邮件。

坦白说,这事其实只需要一句VBA代码。

比如,我要给邮箱'Excel@qq.com'发一封邮件,标题是'你好啊看见星光',同时将当前工作簿作为附件一起发过去👇

代码看不全可以左右拖动..▼

Sub SendMail_1()    ActiveWorkbook.SendMail 'Excel@qq.com', '你好啊看见星光'End Sub

你看,是不是只需要一句代码?

代码使用了SendMail,这是工作簿对象的方法,语法格式如下:

工作簿.SendMail(收件人,主题,是否返回收件人)

就仨参数,第3参数还可以省略,只需要提供收件人和主题就可以了。不过需要注意的是它将工作簿作为附件发送给收件人。

收件人是多人

有朋友可能会问,如果收件人是多人怎么办呢?

将收件人地址修改为一维数组即可。

示例代码如下:

Sub SendMail2() '发送多人 Dim aName, strTit As String    aName = Array('Excel@qq.com', '469772827@qq.com') strTit = '你好啊看见星光' ThisWorkbook.SendMail aName, strTitEnd Sub

第3行代码指定了两个收件人。

发送部分工作表

上面的两段代码都是将整个工作簿作为附件发送出去,如果有朋友只需要发送工作簿中的部分工作表,可以参考以下代码。

以下代码将代码所在工作簿中两个名为'看见星光'和'老祝'的工作表,组合成一个新工作簿,作为附件发送给多个收件人:

Sub SendMail3() '将指定工作表转换为工作簿发送    Dim aName, aShtName, strTit As String    aName = Array('Excel@qq.com''测试@qq.com')    strTit = '你好,这是测试邮件'    aShtName = Array('看见星光''老祝')    Worksheets(aShtName).Copy    ActiveWorkbook.SendMail aName, strTit    ActiveWorkbook.Close FalseEnd Sub

第5行代码指定了两个工作表名称,第6行代码使用工作表对象的Copy方法,将指定工作表集合转换为单独工作簿。

第7行代码发送邮件,第8行代码关闭并不保存当前工作簿。

发送指定工作簿

我先说一句大实话,在我眼里,看到这里的朋友都是靓仔美女。摊手,那再提一个新问题,上述代码是将代码所在工作簿作为附件发送,如果是将发送指定工作簿作为附件怎么办呢?

图片

以下代码可以将当前工作簿同路径下的一个名为'测试'的工作簿,作为附件,发送指定收件人。

Sub SendMail4() '发送指定路径下工作簿 Dim aName, strPath As String, wk As Workbook, strTit As String    aName = Array('Excel@qq.com', '测试@qq.com') strTit = '你好,这是测试邮件' strPath = ThisWorkbook.Path & '/测试.xlsx' Set wk = Workbooks.Open(strPath) ActiveWorkbook.SendMail aName, strTit ActiveWorkbook.Close FalseEnd Sub

第5行代码指定了目标工作簿的完整路径。第6行代码使用工作簿的Open方法打开该工作簿。

第7行代码发送邮件,操作对象是ActiveWorkbook,即当前活动工作簿。第8行代码关闭并不保存当前工作簿。

……

最后,我再说一句大实话,使用以上代码时务必先打开并登陆Outlook邮箱,不然你凭啥发邮件就凭身材好结实?脸蛋美嘟嘟?家里有钱不够花?——那不成呀。

打个响指,今天给大家分享的内容就这些,左上角点关注,右下角点个赞,咱们下期再见。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多