欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 通过使用Excel VBA来进行Outlook自动邮件发送

通过使用Excel VBA来进行Outlook自动邮件发送

2025/2/24 1:12:04 来源:https://blog.csdn.net/caixiaobaideye/article/details/140665718  浏览:    关键词:通过使用Excel VBA来进行Outlook自动邮件发送

1、创建Excel

我们需要创建一个xlsm后缀的excel文件,该后缀文件支持宏的使用

2、Excel操作

添加一些列

收件人抄送人Outlook模板路径替换内容附件内容插入图片是否发送

列的解释

收件人:你要发送给谁,以;进行连接

抄送人:抄送对象,以;进行连接

Outlook模板路径:Outlook所设置的模板,注意模板保存后缀为oft,例子:C:\Users\xx\Desktop\test.oft,路径不需要双引号。

替换内容:对模板中的内容进行替换,以:(替换词1>替换内容1;替换词2>替换内容2)的形式。例子:《天气状况》>差;《活动》>打麻将;《交通工具》>地铁。不需要书名号也可以进行替换。

附件内容:添加附件的路径,以;进行连接

插入图片:插入图片到指定位置,其中例子:Image1>C:\Users\z004zwey\Desktop\img\By Territory.png;Image2>C:\Users\z004zwey\Desktop\img\OR chart.png,同替换内容类似,要替换的字符串>图片路径。

是否发送:(1直接发送0设置为草稿,2仅显示)

设置使用宏

进入excel设置,对开发者窗口打勾

设置宏信任

3、VBA代码编写

引用outlook

发送代码

Sub SendEmail()
Dim smallMessenger As Outlook.Application
Set smallMessenger = New Outlook.ApplicationDim newEmail As MailItem
Dim row, rows As IntegerDim recipient As String
Dim ccRecipients As String
Dim subject As String
Dim outlookTemplatePath As String
Dim replacementContent As String
Dim attachmentContent As String
Dim insertImages As String
Dim sendDirectly As String
Dim strImageHTML As StringDim i, j As IntegerDim Before() As Variant
Dim Back() As Variant
Dim attachs() As Stringrows = ActiveSheet.UsedRange.rows.CountFor i = 2 To rowsrecipient = Cells(i, "A")ccRecipients = Cells(i, "B")subject = Cells(i, "C")outlookTemplatePath = Cells(i, "D")replacementContent = Cells(i, "E")attachmentContent = Cells(i, "F")insertImages = Cells(i, "G")sendDirectly = Cells(i, "H")Set newEmail = smallMessenger.CreateItemFromTemplate(outlookTemplatePath)newEmail.To = recipientnewEmail.CC = ccRecipientsnewEmail.subject = subject' 鏇挎崲鍐呭If replacementContent = "" ThenGoTo label1End IfBefore = getBefore(replacementContent)Back = getBack(replacementContent)For j = LBound(Before) To UBound(Before)newEmail.HTMLBody = Replace(newEmail.HTMLBody, Before(j), Back(j))Next
label1:' 闄勪欢鍐呭If attachmentContent = "" ThenGoTo label2End Ifattachs = Split(attachmentContent, ";")For j = LBound(attachs) To UBound(attachs)newEmail.Attachments.Add (attachs(j))Next
label2:'鎻掑叆鍥剧墖If insertImages = "" ThenGoTo label3End IfBefore = getBefore(insertImages)Back = getBack(insertImages)For j = LBound(Before) To UBound(Before)strImageHTML = "<img src='" & Back(j) & "'>"newEmail.HTMLBody = Replace(newEmail.HTMLBody, Before(j), strImageHTML)Next
label3:If sendDirectly = 1 ThennewEmail.SendElseIf sendDirectly = 2 ThennewEmail.DisplayElseIf sendDirectly = 0 ThennewEmail.Close olSaveEnd If
NextEnd Sub
Function getBefore(ByVal inputText As String) As Variant()Dim tokens() As StringDim result() As VariantDim curtokens() As StringDim i As Integertokens = Split(inputText, ";")ReDim result(0 To UBound(tokens))For i = LBound(tokens) To UBound(tokens)curtokens = Split(tokens(i), ">")result(i) = curtokens(0)NextgetBefore = result
End FunctionFunction getBack(ByVal inputText As String) As Variant()Dim tokens() As StringDim result() As VariantDim curtokens() As StringDim i As Integertokens = Split(inputText, ";")ReDim result(0 To UBound(tokens))For i = LBound(tokens) To UBound(tokens)curtokens = Split(tokens(i), ">")result(i) = curtokens(1)NextgetBack = result
End Function

创建一个按钮绑定宏

一些问题:

excel不保存宏:每次写完宏代码后,退出重新打开不进行保存,解决办法:将excel设置为英文形式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com