基于Access数据库将合并字段插入到Word文档中

时间:2016-06-13 12:27:31

标签: vba ms-word mergefield

我有一个完整的Access数据库和一个Word文档,我想通过Word使用VBA合并它们。设置合并,我有以下内容:

Sub MergeTest
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users...MailMerge.accdb",_
         ConfirmConversions:=False,_ 
         ReadOnly:=False,_ 
         LinkToSource:=True, AddToRecentFiles:=False, _
         PasswordDocument:="", PasswordTemplate:="",_
         WritePasswordDocument:="", _
         WritePasswordTemplate:="", Revert:=False,_
         Format:=wdOpenFormatAuto,
End Sub

我知道OpenDataSource命令有更多参数,但我不太清楚这些参数是什么。无论如何,一旦文件合并,我就知道它是这样的:

ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="Year"
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="Volume"

添加标签。事实是,这要求我在执行命令之前选择工作表上的每个区域。有没有办法在脚本中标记文档中的区域?

1 个答案:

答案 0 :(得分:1)

为了定义以后插入内容的“目标”,请将书签插入到文档中。然后

Document.MailMerge.Fields.Add Range:=Document.Bookmarks("NameOfBookmark").Range, Name:="Year"

请注意,在整个代码中使用ActiveDocument并不是一个好主意。更好的方法是声明一个Word.Document对象并使用您正在打开的文档(或从模板创建)实例化它。这将更快,更不容易出错(如果某些内容应该更改Word应用程序中当前活动的文档)。类似的东西:

Dim doc as Word.Document
Set doc = ActiveDocument
doc.MailMerge.OpenDataSource 'and so on