编程语言应用

首页 » 常识 » 诊断 » 用ExcelVBA编程快速发送邮件
TUhjnbcbe - 2024/10/16 17:10:00
北京白癜风医院那家好 https://disease.39.net/bjzkbdfyy/241012/v2tv6e5.html

如果你每天都要做报表,发给固定的收件人,你想不想只点一个按钮、立即将报表作为附件发送出去?只要你学过Excel的VBA编程,这是一件很简单的事情。

首先在报表中创建一个“邮件地址”表(当然其他名称也可以,在程序中引用这个名称即可)。收件人地址从B2开始往下加,抄送人地址从D2开始往下,密送收件人地址从F2开始往下加,G2填写主题,H2填写正文。A列、C列、E列可以填上对应的收件人姓名,但不是必须的。

密送收件人放在这里只是说明程序的使用方法,失去了密送的意义。这个收件人表也可以不需要,改为在代码中维护收件人,这是更接近实际的做法。一般初学者可以在收件人表中维护收件人信息。

收件人抄送人加密收件人主题正文单元格

发送电子邮件代码如下:

PublicSub发送电子邮件()

DimOutlookAppAsOutlook.Application

DimnewMailAsOutlook.mailitem

DimmyAttachmentsAsOutlook.Attachments

DimnAsInteger,iAsInteger

DimwsAsWorksheet

OnErrorResumeNext

Setws=Worksheets("邮件地址")

n=ws.Range("B").End(xlUp).Row

address=Worksheets("邮件地址").Cells(2,2)

Fori=2Ton

IfinThen

address=address";"Worksheets("邮件地址").Cells(i+1,2)

EndIf

Nexti

CC

n=ws.Range("D").End(xlUp).Row

addressCC=Worksheets("邮件地址").Cells(2,4)

Fori=2Ton

IfinThen

addressCC=addressCC";"Worksheets("邮件地址").Cells(i+1,4)

EndIf

Nexti

BCC

n=ws.Range("F").End(xlUp).Row

addressBCC=Worksheets("邮件地址").Cells(2,6)

Fori=2Ton

IfinThen

addressBCC=addressBCC";"Worksheets("邮件地址").Cells(i+1,6)

EndIf

Nexti

SetOutlookApp=NewOutlook.Application

wbStr=ThisWorkbook.FullName指定要发送发工作簿名称字符串

SetnewMail=OutlookApp.CreateItem(olMailItem)创建新邮件

WithnewMail

.Subject=Worksheets("邮件地址").Cells(2,7)设置邮件主题

.Body=Worksheets("邮件地址").Cells(2,8)设置邮件正文

发送附件

SetmyAttachments=newMail.Attachments

myAttachments.AddwbStr,olByValue,1,"工作簿"

.To=address收件人

.CC=addressCC抄送

.BCC=addressBCC密送

.Send开始发送

EndWith

EndSub

请注意,要在Outlook中设置允许编程访问,具体如何设置请看我的另一篇文章“如何用Excel实现办公自动化”。否则会弹出如下对话框要你选择:

Outlook弹出的对话框

最后,添加一个加载项菜单中的按钮,链接到你编写的程序模块。点击一下按钮,即可运行程序,把你这个报表作为附件发给相关收件人。以后要发出邮件,只要点击这个按钮就可以了。

1
查看完整版本: 用ExcelVBA编程快速发送邮件