我正在寻找优化和重写一些代码来循环一堆在命令单击时运行的邮件合并。现在,存在 8 个相互独立的合并。我的问题是我运行了 8 个查询,这些查询都需要一个开始/结束日期来从表中提取信息并将其提供给邮件合并文档。我想通过输入框指定参数日期,然后将其传递给循环中的所有合并。
For i = 1 To 1 'will change to 8 :)
Select Case i
Case 1
wordDoc = pathToDocToMerge
sqlStr = "SELECT * FROM [QUERY - FIRST LETTERS]"
sqlConex = "QUERY - FIRST LETTERS"
strExport = "Normal"
fileout = desktopPath & "\ " & strmonth & " - FIRSTLETTERS.pdf"
Case 2
Case 3
Case 4
Case 5
Case 6
Case 7
Case 8
End Select
Set objword = GetObject(wordDoc)
objword.Application.Visible = False
objword.MailMerge.OpenDataSource _
Name:=pathToMDB, _
LinkToSource:=True, _
Connection:=sqlConex, _
sqlstatement:=sqlStr
objword.MailMerge.Destination = wdSendToNewDocument
objword.MailMerge.Execute
If printtopdf = vbYes Then
objword.Application.ActiveDocument.ExportAsFixedFormat OutputFileName:= _
fileout _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument
objword.Application.ActiveDocument.close SaveChanges:=wdDoNotSaveChanges
Else
objword.Application.Options.PrintBackground = False
'Print one copy of the letter
objword.Application.ActiveDocument.PrintOut
'Close Word and do not save the changes
End If
objword.Application.Quit SaveChanges:=wdDoNotSaveChanges
Set objword = Nothing
Next i
我知道参数可以像这样传递:
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim prm As DAO.Parameter
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("qry_AMIS")
For Each prm In qdf.Parameters
prm = Eval(prm.Name)
Next prm
Set rst = qdf.OpenRecordset
但是我不确定如何将其与邮件合并联系起来,因为查询变成了 RST。任何人都可以解释一下吗?