我写了一个 Excel > Word 邮件合并,其中 word 文档是邮件合并模板。
目前,必须对 excel 文件(数据源)的位置进行硬编码。
我希望能够移动有关网络的文件,只要它们彼此位于同一文件夹中,这样它就可以识别数据源仍然是excel文件。
我目前有这段我认为可以工作的代码。当 word 文档在任何时候打开时,它将通过查找文件的当前目录并查找文件名 PM MailMerge.xlsm 来重新创建数据源。
然后当它被创建时,一个消息框应该显示新的邮件合并数据源。
这可行,但是当我将这两个文件移动到任何其他文件夹时,它会失败并说找不到数据源。
代码:
Private Sub Document_Open()
Dim strBook As String
Dim strBookName As String
Dim strDataSource As String
strBookName = "\PM MailMerge.xlsm"
strBook = ActiveDocument.Path & strBookName
strDataSource = ActiveDocument.MailMerge.DataSource.Name
ActiveDocument.MailMerge.OpenDataSource Name:= _
strBook, _
ConfirmConversions:=False, _
ReadOnly:=False, _
LinkToSource:=True, _
AddToRecentFiles:=False, _
PasswordDocument:="", _
PasswordTemplate:="", _
WritePasswordDocument:="", _
WritePasswordTemplate:="", _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=strBook;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:D", _
SQLStatement:="SELECT * FROM `Merge$`", _
SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
MsgBox "Current Datasource - " + strDataSource
End Sub