使用Excel VBA实现Outlook自动邮件发送的完整教程
创作时间:
作者:
@小白创作中心
使用Excel VBA实现Outlook自动邮件发送的完整教程
引用
CSDN
1.
https://blog.csdn.net/caixiaobaideye/article/details/140665718
本文将详细介绍如何使用Excel VBA实现Outlook自动邮件发送。通过创建一个支持宏的Excel文件,设置相关参数,并编写VBA代码,可以实现邮件的自动化发送。
1. 创建Excel文件
首先需要创建一个带有宏功能的Excel文件,文件后缀名为xlsm。这种文件格式支持宏的使用。
2. Excel操作
添加列
在Excel中添加以下列:
- 收件人:邮件接收者,多个收件人用分号(;)分隔
- 抄送人:抄送对象,多个抄送人用分号(;)分隔
- Outlook模板路径:保存的Outlook邮件模板路径,文件后缀为oft
- 替换内容:对模板中的内容进行替换,格式为:替换词1>替换内容1;替换词2>替换内容2
- 附件内容:添加附件的路径,多个附件用分号(;)分隔
- 插入图片:插入图片到指定位置,格式为:Image1>图片路径1;Image2>图片路径2
- 是否发送:设置邮件状态(1直接发送、0设置为草稿、2仅显示)
设置使用宏
要使用宏功能,需要在Excel中进行相应的设置:
进入Excel设置,勾选开发者窗口:
设置宏信任:
3. VBA代码编写
引用Outlook
发送代码
Sub SendEmail()
Dim smallMessenger As Outlook.Application
Set smallMessenger = New Outlook.Application
Dim newEmail As MailItem
Dim row, rows As Integer
Dim 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 String
Dim i, j As Integer
Dim Before() As Variant
Dim Back() As Variant
Dim attachs() As String
rows = ActiveSheet.UsedRange.rows.Count
For i = 2 To rows
recipient = 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 = recipient
newEmail.CC = ccRecipients
newEmail.subject = subject
' 鏇挎崲鍐呭
If replacementContent = "" Then
GoTo label1
End If
Before = 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 = "" Then
GoTo label2
End If
attachs = Split(attachmentContent, ";")
For j = LBound(attachs) To UBound(attachs)
newEmail.Attachments.Add (attachs(j))
Next
label2:
'鎻掑叆鍥剧墖
If insertImages = "" Then
GoTo label3
End If
Before = 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 Then
newEmail.Send
ElseIf sendDirectly = 2 Then
newEmail.Display
ElseIf sendDirectly = 0 Then
newEmail.Close olSave
End If
Next
End Sub
Function getBefore(ByVal inputText As String) As Variant()
Dim tokens() As String
Dim result() As Variant
Dim curtokens() As String
Dim i As Integer
tokens = Split(inputText, ";")
ReDim result(0 To UBound(tokens))
For i = LBound(tokens) To UBound(tokens)
curtokens = Split(tokens(i), ">")
result(i) = curtokens(0)
Next
getBefore = result
End Function
Function getBack(ByVal inputText As String) As Variant()
Dim tokens() As String
Dim result() As Variant
Dim curtokens() As String
Dim i As Integer
tokens = Split(inputText, ";")
ReDim result(0 To UBound(tokens))
For i = LBound(tokens) To UBound(tokens)
curtokens = Split(tokens(i), ">")
result(i) = curtokens(1)
Next
getBack = result
End Function
创建按钮绑定宏
在Excel中创建一个按钮,并将其与编写的宏进行绑定,以便通过点击按钮来执行邮件发送操作。
一些问题
- Excel不保存宏:每次写完宏代码后,退出重新打开时不进行保存。解决办法是将Excel设置为英文形式。
热门推荐
王殿武:认知比勤奋重要,趋势比努力重要,方向比方法重要
本地部署:Real-ESRGAN: 高效的图像超分辨率解决方案
全国十多个鬼谷子修道地云梦山,他到底在哪创办中国第一所军校?
施工项目技术管理:关键要素与实施策略
病理学在肿瘤诊断和治疗中的作用是什么?
AI绘画与生文工具新时代:如何借助简单AI提升创作效率与质量
放弃抚养权的法律后果及注意事项
跨专业转产品经理的人如何提高专业素养
CRM本地化部署:优势、案例与实施建议
如何评估化工公司的投资价值?这些评估方法有哪些局限性?
长期吃花生是降血压,还是升血压?科学依据是什么?
英国是什么时候建立的
冬季御寒保暖10大妙招!按摩1穴位可快速令身体暖起来
数码盛行的当下,胶片摄影还会被需要吗?
斗破苍穹中拥有过前10异火的强者:炎族拥有过3种,萧炎全部拥有
CPU缓存对计算机性能的影响
加密货币市场“黑色星期一”再现,这是最后一跌还是熊市开端?
企业职业卫生培训内容详细解析
电容器专利在新材料研发中的应用与发展趋势探讨
个人向公司借款时,借条该如何书写?
全身水肿的原因及对患者的影响
北京大学化学专业:百年积淀,引领未来
《纽约时报》:气候变化正吞噬美国房屋价值
如何应对焦虑?这十种方法能帮你摆脱人生焦虑期吗?
狂犬病:传播、症状与预防全解析
解决手机应用闪退问题的多种原因与应对方法分析
农村婚礼仪式的变迁
赛诺菲15亿美元引进的TL1A单抗治疗炎症性肠病IIb期研究成功
侯马:聚“链”成群 挺起高质量发展脊梁
动漫中的和风绮梦:深度剖析忍者服饰的艺术魅力与文化底蕴