我刚才从网上获得了以下VBA代码:
Private Sub btnCreatePDF_Click()
Dim MyPath As String
Dim MyFilename As String
MyPath = "D:\reports\"
MyFilename = "KS1.pdf"
'Open report preview and auto-save it as a PDF
DoCmd.OpenReport "Rpt_KS1", acViewPreview
DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False 'Change false to true here to auto-open the saved PDF
'Close the previewed report
DoCmd.Close acReport, "Rpt_KS1"
End Sub
用于在MS Access中创建单个pdf报告(最多包含30页),并且可以正常工作。但是,我现在需要将报告拆分为30个左右的页面,并为每个页面创建一个pdf。知道如何做到这一点? 我在报告中有一个“用户名”,或者可以添加唯一ID,如果这有助于拆分它们等。
答案 0 :(得分:2)
使用Docmd.OpenReport的第4个参数(WhereCondition)。使用WhereCondition,在添加查询位置时,通常会执行通常所做的操作,但不要包含单词Where。这将使报告仅显示与WhereCondition匹配的记录。
将您的唯一标识符列表检索到某种集合或记录集中然后执行循环。此示例假定您将它们放在名为uniqueIds的集合中,并且几乎肯定需要您进行一些修改。
Dim MyPath As String
Dim MyFilename As String
MyPath = "D:\reports\"
'Loop structure may vary depending on how you obtain values
For each uniqueId in uniqueIds
MyFilename = "KS1" & uniqueId & ".pdf"
'Open report preview and auto-save it as a PDF
DoCmd.OpenReport "Rpt_KS1", acViewPreview, , "uniqueField = " & uniqueID
DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False
'Close the previewed report
DoCmd.Close acReport, "Rpt_KS1"
Next uniqueId
严格地说,这可能不会导致每页的PDF不同。但它会为每个唯一ID生成不同的PDF,这可能是每个页面,具体取决于您的数据。