之后有很多小伙伴提出各种问题……这让星光俺深刻的意识到……Excel和邮件这俩坏银的关系金不一般啊,好像系时候曝光一个系列了。
2.
整理了下伙伴们的问题,基本如下:
如何将代码修改成不添加附件发送?
如何将代码修改成抄送多个人?
如何将代码修改成添加不同的附件发送?
如何让Excel控制Lotus Notes发送邮件?
如何让Excel控制FoxMail发送邮件?
如何让Excel控制QQ邮箱发送邮件?
……
3.
这期我们先来回答前三个问题。
第1个问题,如何将代码修改成不添加附件发送?
介个问题,把我们上期的代码有关附件的部分删除掉就OK。更新后代码和模版文件可以点击【阅读原文】获取。
第2个问题,如何将代码修改成抄送多人?
……把抄送人的邮箱用半角分号间隔就可以了。
比如:
.CC = "test123@163.com;test124@163.com;test124@163.com"
第3个问题,如何将代码修改成添加不同的附件发送?
介个问题,可以先用Dir函数判断相关文件是否存在,如果存在则添加到邮件中……包含代码的文件链接:
http://pan.baidu.com/s/1Kj3FlG0VPivMukrfvc_t-w
小贴士:
本期示例代码是根据人名匹配并添加附件,例如给员工崔冰冰发送邮件,则添加代码所在工作簿的文件夹下 名称为崔冰冰 的文件。
Sub SendMailEnvelope_2() '带不同附件
Dim avntWage As Variant
Dim i As Long
Dim strText As String
Dim objAttach As Object
Dim strFldPath As String
Dim strFileName As String
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
strFldPath = ThisWorkbook.Path & ""
'------------附件存放的文件夹路径,本例是代码所在工作簿的同一文件夹下
avntWage = Sheets("工资表").[a1].CurrentRegion
'------------工资表的数据装入数组
For i = 2 To UBound(avntWage)
[a2:i2] = Application.Index(avntWage, i)
'------------工资条信息放入a2:i2区域
[b1:i2].Select
'------------选中b1:i2作为邮件正文的表格内容
ActiveWorkbook.EnvelopeVisible = True
'------------MailEnvelope可见
With ActiveSheet.MailEnvelope
strText = avntWage(i, 2) & "您好:" & vbCrLf & "以下是您" & _
avntWage(i, 3) & "月份工资明细,请查收!"
.Introduction = strText
'------------邮件正文内容
With .Item
.To = avntWage(i, 1)
'------------收件人
.CC = "treasurer@gmail.com"
'------------抄送人
.Subject = avntWage(i, 3) & "月份工资明细"
'------------主题
Set objAttach = .Attachments
Do While objAttach.Count > 0
'------------Do While语句删除可能存在的旧附件
objAttach.Remove 1
Loop
strFileName = Dir(strFldPath & avntWage(i, 2) & "*.*")
If strFileName > "" Then
.Attachments.Add strFldPath & strFileName
'------------如果存在指定名称的附件,则添加新附件
End If
.send
'------------发送邮件
End With
End With
Next i
ActiveWorkbook.EnvelopeVisible = False
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Set objAttach = Nothing
End Sub