1

我正在寻找优化和重写一些代码来循环一堆在命令单击时运行的邮件合并。现在,存在 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。任何人都可以解释一下吗?

4

1 回答 1

0

快速查看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表单上用于提示用户提供日期的文本框在哪里。

于 2013-04-19T15:10:00.903 回答