在邮件合并中添加附件.doc
文本预览下载声明
本文主要介绍如何通过宏(vba)在邮件合并中添加附件。关于邮件合并的基本使用方法,将不进行介绍。? Word的邮件合并是一个很强大、很实用的功能,但是美中不足的是,无法在邮件合并中添加附件,并把附件作为邮件的一部分发送出去(虽然可以通过把整个文档包括附件作为邮件的附件发送出去,但是这样子并不完美解决问题)。为了实现这样的功能,需要借助到宏的帮助。准备工作:? 首先用Word建立一个“目录”类型的邮件合并,在主文档中插入一个只有一行的表格,列数根据需要设置,但在我们现在的这个文档中,至少需要两列,第一列存放客人邮箱地址的合并域,第二列存放附件的完整路径的合并域,包括附件的名称与后缀。如果你需要添加多于一个附件,就增加第三列,并把新的附件的路径的合并域放进去。完成以后,实行邮件合并,生成一个包含了所有客人邮箱地址和需要发送给每个客人的附件的路径的Word文档。为该文档建一个你喜欢的名字,并保存在电脑上。这样子,准备工作完成了。? ? ? ? 合并前的邮件列表主文档:
? ? ? ???? ? ? ?合并后的邮件列表:? ? ? ???建立宏并完成邮件发送:? ? 运行本文所介绍的宏,需要电脑中安装有Outlook(建议安装Outlook 2007或者以上版本)。在开始写宏程序之前,需要在vba编辑器中添加对Outlook的引用。具体步骤是:在需要建立邮件合并的Word主文档中按Alt+F11打开vba编辑器,然后在“工具”菜单中选择“引用”,并添加类似于“Microsoft Outlook ##.0 Object Library”的引用,其中“##”是Outlook的版本号(如果我没有记错的话,2003是11.0,2007是12.0,2010是14.0——好像微软觉得13.0不吉利,把13这个版本号给华丽的忽略掉了……)。? ? ? ? 然后,插入一个模块,并把下面的代码复制进去: 代码:Sub eMailMergeWithAttachments()? ? Dim docSource As Document, docMaillist As Document, docTempDoc As Document? ? Dim rngDatarange As Range? ? Dim i As Long, j As Long? ? Dim lSectionsCount As Long? ? Dim bStarted As Boolean? ? Dim oOutlookApp As Outlook.Application? ? Dim oItem As Outlook.MailItem? ? Dim oAccount As Outlook.Account? ? Dim sMySubject As String, sMessage As String, sTitle As String? ? 将当前文档设置为源文档(主文档)? ? Set docSource = ActiveDocument? ? 检查Outlook是不是打开了。如果未打开的话,就打开新的Outlook? ? On Error Resume Next? ? Set oOutlookApp = GetObject(, Outlook.Application)? ? If Err 0 Then? ?? ???Set oOutlookApp = CreateObject(Outlook.Application)? ?? ???bStarted = True? ? End If? ? 打开保存有客人的邮件地址和需要发送的附件的路径的word文档。? ? With Dialogs(wdDialogFileOpen)? ?? ???.Show? ? End With? ? 将该文档设置为客户邮件(附件)列表文档? ? Set docMaillist = ActiveDocument? ? 设置发送邮件的账户(账户必须已经在Outlook中设置好了)? ? 注意:如果你的Outlook版本低于2007,使用设置发送邮件的账户可能会导致错误,? ? 建议将下面的Set oAccount = oOutlookApp.Session.Accounts.Item(someone@)语句删除? ? Set oAccount = oOutlookApp.Session.Accounts.Item(someone@)? ? 显示一个输入框,询问并让用户输入邮件主题? ? sMessage = 请为要发送的邮件输入邮件主题。? ? sTitle = 输入邮件主
显示全部