邮件合并循环并传递查询参数



我希望优化和重写一些代码来循环一堆邮件合并在命令单击上运行。现在,存在8个独立的合并,它们相互之间运行。我的问题是我运行了8个查询,它们都需要一个开始/结束日期来从表中提取信息并将其提供给邮件合并文档。我想通过inputbox来指定参数日期,然后将其传递给循环中的所有merge。

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。有人能告诉我吗?

在快速浏览了MailMerge.OpenDataSource的文档之后,我不明白为什么不能直接更改现有的代码…

sqlStr = "SELECT * FROM [QUERY - FIRST LETTERS]"

…到…

sqlStr = "SELECT * FROM [QUERY - FIRST LETTERS] WHERE SomeDate=#" & Format(CDate(Me.txtSpecifyDate.Value), "yyyy-mm-dd") & "#"

…其中Me.txtSpecifyDate是表单上的一个文本框,用于提示用户提供日期。

最新更新