我有一个完整的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"
添加标签。事实是,这要求我在执行命令之前选择工作表上的每个区域。有没有办法在脚本中标记文档中的区域?
答案 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