|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 tth0561 于 2012-9-21 13:32 编辑
本方法使用microsoft outlook vba来实现word邮件合并带附件群发,在microsoft office 2003,microsoft office 2010上测试通过.
建立excel文件e:\list.xls,存放收件人地址和对应附件的存放路径
格式如下
1 name email attachment
2 name1 name1@qq.com e:\name1.dat
3 name2 name2@qq.com e:\name2.dat
打开microsoft outlook,配置好电子邮件,按Alt+F11打开Visual Basic编辑器,
1.工具->引用->Microsoft ActiveX Data Objects 2.0 Library,(设置宏安全性为中)
2.在Project1->Microsoft Office Outlook 对象-> ThisOutlookSession中输入一下代码
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
lianjie = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;hdr=yes;';Data Source=c:\temp\test\test.xls"
cnn.Open lianjie
st = "select attachment from [sheet1$] where email='" & Item.To & "'"
Set rs = cnn.Execute(st)
If Not (IsNull(rs("attachment"))) Then
Item.Attachments.Add (rs("attachment"))
End If
rs.Close
cnn.Close
End Sub
建立一个word文件,输入邮件的内容。
在工具栏上点击鼠标右键选择“邮件合并”,在出现的邮件合并工具栏上
选择打开数据源,打开e:\list.xls,根据需要可插入需要的域到邮件内容中.
点击邮件合并工具栏上的“合并到电子邮件”,收件人设为"email",发送即可,再打开microsoft outlook时,发件箱内就是生成的新邮件了.
问题:
1.如果发送的邮件比较多,要求机器性能要好,否则处理起来很慢.
2.可以看到我在outlook vba中使用了数据库连接来访问了list.xls来得到附件的存放路径,
本来我想让该地址从word中直接传进来,outlook vba直接获得该附件地址再加入到邮件中,就不需要再次查询list.xls,但是没查找到相关的资料.
能否有办法将该附件地址通过word中的某种隐藏变量(不知word宏能否实现)传入outlook,再用outlook vba来读取该地址那就比较完美了.
请高手指点一下,能否解决该问题.
|
|