在邮件合并中添加附件_第1页
在邮件合并中添加附件_第2页
在邮件合并中添加附件_第3页
在邮件合并中添加附件_第4页
在邮件合并中添加附件_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文主要介绍如何通过宏(vba)在邮件合并中添加附件。关于邮件合并的基本使用方法,将不进行介绍。  Word的邮件合并是一个很强大、很实用的功能,但是美中不足的是,无法在邮件合并中添加附件,并把附件作为邮件的一部分发送出去(虽然可以通过把整个文档包括附件作为邮件的附件发送出去,但是这样子并不完美解决问题)。为了实现这样的功能,需要借助到宏的帮助。准备工作:  首先用Word建立一个“目录”类型的邮件合并,在主文档中插入一个只有一行的表格,列数根据需要设置,但在我们现在的这个文档中,至少需要两列,第一列存放客人邮箱地址的合并域,第二列存放附件的完整路径的合并域,包括附件的名称

2、与后缀。如果你需要添加多于一个附件,就增加第三列,并把新的附件的路径的合并域放进去。完成以后,实行邮件合并,生成一个包含了所有客人邮箱地址和需要发送给每个客人的附件的路径的Word文档。为该文档建一个你喜欢的名字,并保存在电脑上。这样子,准备工作完成了。        合并前的邮件列表主文档:                合并后的邮件列表:         建立宏并完成邮件发送:  &

3、#160; 运行本文所介绍的宏,需要电脑中安装有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这个版本号给华丽的忽略掉了)。    &

4、#160;   然后,插入一个模块,并把下面的代码复制进去: 代码: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 bStarte

5、d 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 = ActiveD

6、ocument    '检查Outlook是不是打开了。如果未打开的话,就打开新的Outlook    On Error Resume Next    Set oOutlookApp = GetObject(, "Outlook.Application")    If Err <> 0 Then        Set oOutlookApp = CreateObject("Outlook.Applicati

7、on")        bStarted = True    End If    '打开保存有客人的邮件地址和需要发送的附件的路径的word文档。    With Dialogs(wdDialogFileOpen)        .Show    End With    '将该文档设置为客户邮件(附件)列表文档    Set doc

8、Maillist = ActiveDocument    '设置发送邮件的账户(账户必须已经在Outlook中设置好了)    '注意:如果你的Outlook版本低于2007,使用设置发送邮件的账户可能会导致错误,    '建议将下面的Set oAccount = oOutlookApp.Session.Accounts.Item("someone")语句删除    Set oAccount = oOutlookApp.Session.Accounts.Item(&quo

9、t;someone")    '显示一个输入框,询问并让用户输入邮件主题    sMessage = "请为要发送的邮件输入邮件主题。"    sTitle = "输入邮件主题"    sMySubject = InputBox(sMessage, sTitle)    '循环查找源文档中所有的节(每一节为一封邮件内容),以及循环查找邮件列表文档中所有的客户信息,    '以便用于插入到生成的邮件中&#

10、160;   lSectionsCount = docSource.Sections.Count - 1    '当源文档中的节数仅有1时,lSectionsCount=0,将导致程序无法正常运行。    '为了保证当源文档只有1节时程序能正常运行,必须使lSectionsCount至少等于1    If lSectionsCount = 0 Then lSectionsCount = 1    For j = 1 To lSectionsCount    

11、   Set oItem = oOutlookApp.CreateItem(olMailItem)        With oItem            '注意:如果你的Outlook版本低于2007,使用设置发送邮件的账户可能会导致错误,            '建议将下面的.SendUsingAccount = oAccou

12、nt语句删除            .SendUsingAccount = oAccount            .Subject = sMySubject            .Body = docSource.Sections(j).Range.Text           

13、60;Set rngDatarange = docMaillist.Tables(1).Cell(j, 1).Range            rngDatarange.End = rngDatarange.End - 1            .To = rngDatarange            For i = 2 To docMaillist.Ta

14、bles(1).Columns.Count                Set rngDatarange = docMaillist.Tables(1).Cell(j, i).Range                rngDatarange.End = rngDatarange.End - 1            

15、;    .Attachments.Add Trim(rngDatarange.Text), olByValue, 1            Next i            .Send        End With        Set oItem = Nothing   

16、 Next j    docMaillist.Close wdDoNotSaveChanges    '如果Outlook是由该宏打开的,则关闭Outlook    If bStarted Then        oOutlookApp.Quit    End If    MsgBox "共发送了 " & lSectionsCount & " 封邮件。"    '清空Outlook实例    Set oOutlookApp = NothingEnd Sub到这里,基本上已经完成大部分的工作了。        现在,实行邮件合并,生成包含需要发给所有客人的邮件的Word文档。然后运行刚刚完成的宏,就可以了。        有一点需要特别注意的是:用于生成客人邮箱地址和附件列表的邮件合并的数据源,和用于生成邮件本身的邮件合并的数据源,最好是相同的,否则有可能导致把错误的附件发送给错误的客人的情况。 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论