(VBA)为表中的每条记录创建一个文件“pdf”

Posted

技术标签:

【中文标题】(VBA)为表中的每条记录创建一个文件“pdf”【英文标题】:(VBA) create a file "pdf" for each record in a table 【发布时间】:2020-09-21 01:09:18 【问题描述】:

帮帮我,我编写的这段代码创建了多个文件,但每个文件只包含第一条记录中的值: 我想要表格中每条记录的文件 pdf。

Option Compare Database 
Option Explicit

Private Declare PtrSafe Sub 
Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Private Sub Creazione_Click()
Dim rs As DAO.Recordset
Dim rpt As Access.Report
Dim sFolder As String
Dim sFile As String
Const sReportName = "Mandato"
sFolder = "C:\Users\Famiglia\Desktop\Mandati\"

Set rs = Me.RecordsetClone
With rs
If .RecordCount <> 0 Then
'Open the Report
DoCmd.OpenReport sReportName, acViewPreview, , , acHidden
'Define a report object so we can manipulate it below
Set rpt = Reports(sReportName).Report
.MoveFirst
Do While Not .EOF
'Build the PDF filename we are going to use to save the PDF with
sFile = Nz(![id], "") & " " & Nz(![COGNOME], "") & ".pdf"
sFile = sFolder & sFile
DoCmd.OutputTo acOutputReport, sReportName, acFormatPDF, sFile, , , , acExportQualityPrint
Call Sleep(1000)
DoEvents
.MoveNext
Loop
DoCmd.Close acReport, sReportName
End If
End With
End Sub    

【问题讨论】:

【参考方案1】:

打开、输出、关闭过滤到循环内记录的报告。

Do While Not .EOF
    DoCmd.OpenReport sReportName, acViewPreview, , "ID=" & rs!ID, acHidden
    ...
    DoCmd.Close acReport, sReportName
    .MoveNext
Loop

报表对象变量不是必需的。您的代码甚至没有使用该变量。

【讨论】:

以上是关于(VBA)为表中的每条记录创建一个文件“pdf”的主要内容,如果未能解决你的问题,请参考以下文章

如何为数据库表中的每条记录生成一个id?

sql 为表中的每一行创建哈希码。

VBA DoCmd.TransferText。在访问表中再添加一个字段

如何为mysql中的每条记录检索表中的两条记录

如何从左表中仅获取一条记录与右表中的每条记录

删除表中的每条记录时重新启动Id = 1? (角度 + Spring Boot + MySQL)