生成 PDF 报告的 VBA 代码

     2023-05-07     129

关键词:

【中文标题】生成 PDF 报告的 VBA 代码【英文标题】:VBA Code to Produce PDF Reports 【发布时间】:2018-01-18 16:02:40 【问题描述】:

您好,我正在学习访问和 VBA。最近创建了一份报告 (Report1),其中显示了单个课程的调查 cmets。此报告的标准是[Course]。我还创建了一个包含课程列表 (Course List) 的查询,可以循环访问这些课程以生成每门课程的报告。我正在寻找一些可以将这两者链接在一起并为每门课程创建单独的 pdf 的基本代码。

这是我目前所拥有的:

Private Sub GetCourseName()
Dim rst As Recordset
Dim db As Database
Dim strSQL As String

Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT [Course] FROM [Course List]")

rst.MoveFirst
Do Until rst.EOF
DoCmd.OpenReport "rptReport1", acViewPreview, , "Course = " & rst!Course
  DoCmd.OutputTo acOutputReport, "rptReport1", acFormatPDF, "C:\Users\raj.jk\Documents\Course Evaluations" & rst!Course & ".pdf"

DoCmd.Close acReport, "rptReport1"
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
strSQL = ""
End Sub

【问题讨论】:

该代码有什么问题,您的问题是什么?有用吗? 问题是代码只是打开报告,并没有真正填写查询中的条件或保存任何内容。我认为这行代码主要是问题 DoCmd.OpenReport "Report1", acViewPreview, , Course = rst!Course 【参考方案1】:

推测Course是一个文本值(而不是数值),所以需要在过滤表达式中用单引号括起来:

"Course = '" & rst!Course & "'"

或嵌入双引号:

"Course = """ & rst!Course & """"

【讨论】:

谢谢!我认为这有助于解决一个问题,但另一个问题是由于某种原因代码没有将参数传递给报告,因为我仍然被提示输入课程。【参考方案2】:

我猜你的报告设计有问题。这不是一项容易解决的任务,但也许导出报告的设计会很有帮助。看看这个声明Application.SaveAsText acReport, "rptReport1", "C:\rptReport1_design_exported_as_text.txt"

我试图重新创建您的数据库。我使用了这些说明:



Private Sub CodeToProduceTextReports__01()
' create table and insert some testing values
    CurrentDb.Execute "CREATE TABLE [Course List] (CourseID autoincrement, Course varchar(50), Course_Title varchar(50), Course_Location varchar(50))"
    CurrentDb.Execute "INSERT INTO [Course] (Course, Course_Title, Course_Location) VALUES " & _
            "('alfa', 'first Greek lettre', 'aa')"
    CurrentDb.Execute "INSERT INTO [Course] (Course, Course_Title, Course_Location) VALUES " & _
            "('beta', 'second Greek lettre', 'bb')"
    CurrentDb.Execute "INSERT INTO [Course] (Course, Course_Title, Course_Location) VALUES " & _
            "('gamma', 'thirth Greek lettre', 'cc')"
End Sub
Private Sub CodeToProduceTextReports__02()
' importing the design from the report from a saved version in text format
    Application.LoadFromText acReport, "rptReport1", "C:\rptReport1_design_exported_as_text.txt"
End Sub
Private Sub CodeToProduceTextReports__03()
' --03-- print the displayed data of the imported report to a text-file
' for my testings I needed to switch from PDF to TXT
    DoCmd.OutputTo acReport, "rptReport1", acFormatTXT , "C:\Data Displayed By Report.txt", False, ""
End Sub
Private Sub CodeToProduceTextReports__04()
' --04-- export the design of the report to a text-file
    Application.SaveAsText acReport, "rptReport1", "C:\design of report in text format.txt"
End Sub
Private Sub CodeToProduceTextReports__05()
' --05-- routine to print a file for each course
    ...
    rst.MoveFirst
    Do Until rst.EOF
        DoCmd.OpenReport "rptReport1", acViewPreview, , "Course = '" & rst!Course & "'"
        ' for my testings I needed to switch from PDF to TXT
        DoCmd.OutputTo acOutputReport, "rptReport1", acFormatTXT, "Course Evaluations" & rst!Course & ".txt"
        DoCmd.Close acReport, "rptReport1"
        rst.MoveNext
    Loop
    ...
End Sub

要执行这些指令,您需要文件"C:\rptReport1_design_exported_as_text.txt" 的内容。


Version =19VersionRequired =19Checksum =-3122728Begin Report    LayoutForPrint = NotDefault
    AllowDesignChanges = NotDefault    DefaultView =0
    TabularFamily =0
    DateGrouping =1
    GrpKeepTogether =1
    PictureAlignment =2
    DatasheetGridlinesBehavior =3
    GridY =10
    Width =5669
    ItemSuffix =3
    Left =270
    Top =600
    Right =7725
    Bottom =7140
    DatasheetGridlinesColor =12632256
    RecSrcDt = Begin
        0x8d11b150f50de540
    End
    GUID = Begin
        0xebeaeb4b353b1e41965fcce57dee6850
    End
    NameMap = Begin
        0x0acc0e5500000000b21f4d48d7501c47975fad457306950f0000000006bb61eb ,
        0x3f0ee540000000000000000043006f00750072007300650020004c0069007300 ,
        0x7400000000000000a1f51f8cd9d88f40b7d811fdc68024a207000000b21f4d48 ,
        0xd7501c47975fad457306950f43006f00750072007300650000000000000030e5 ,
        0x8a48064ac944ba5f2d69ec0cfe2507000000b21f4d48d7501c47975fad457306 ,
        0x950f43006f0075007200730065005f005400690074006c006500000000000000 ,
        0x3f6cd73810d7ed4dacc51df5fba38c4a07000000b21f4d48d7501c47975fad45 ,
        0x7306950f43006f0075007200730065005f004c006f0063006100740069006f00 ,
        0x6e00000000000000000000000000000000000000000000000c00000002000000 ,
        0x0000000000000000000000000000
    End
    RecordSource ="Course List"
    DatasheetFontName ="Arial Narrow"
    PrtMip = Begin
        0xae050000ae050000ae050000ae0500000000000025160000a506000001000000 ,
        0x010000006801000000000000a10700000100000001000000
    End
    PrtDevMode = Begin
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x010400049c009000032f000002000900000000006400010001002c0101000100 ,
        0x2c01010000004c65747465720000000000000000000000000000000000000000 ,
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x000000000000000000000000000000000000000000000000000000007769646d ,
        0x10000000010000000000000000000000fe00000001000000000000002c010000 ,
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x000000000000000000000000
    End
    PrtDevNames = Begin
        0x080036005d000100000000000000000000000000000000000000000000000000 ,
        0x0000000000000000000000000000000000000000000000000000000000000000 ,
        0x00000000000000000000000000000000000000000000000000000000004d6963 ,
        0x726f736f667420446f63756d656e7420496d6167696e67205772697465722050 ,
        0x6f72743a00
    End
    Begin
        Begin Label
            BackStyle =0
            TextFontFamily =2
            FontName ="Arial"
        End
        Begin TextBox
            FELineBreak = NotDefault
            OldBorderStyle =0
            TextFontFamily =2
            Width =1701
            LabelX =-1701
            FontName ="Arial"
        End
        Begin Section
            KeepTogether = NotDefault
            Height =1701
            Name ="Details"
            GUID = Begin
                0xbbf704242af93b45b77934d4cf2c2e95
            End
            Begin
                Begin TextBox
                    IMESentenceMode =3
                    Left =1870
                    Top =113
                    Name ="Course"
                    ControlSource ="Course"
                    GUID = Begin
                        0xc8704b4483a48440b68813fa30cc9d70
                    End
                    Begin
                        Begin Label
                            Left =169
                            Top =113
                            Width =630
                            Height =225
                            Name ="Bijschrift0"
                            Caption ="Course:"
                            GUID = Begin
                                0xb620b2a6a8332d42a52b1dc58425b1be
                            End
                        End
                    End
                End
                Begin TextBox
                    IMESentenceMode =3
                    Left =2097
                    Top =453
                    TabIndex =1
                    Name ="Course_Title"
                    ControlSource ="Course_Title"
                    GUID = Begin
                        0xd33ee5134f828846ad63db31ed83c4e4
                    End
                    Begin
                        Begin Label
                            Left =396
                            Top =453
                            Width =1005
                            Height =225
                            Name ="Bijschrift1"
                            Caption ="Course_Title:"
                            GUID = Begin
                                0x44b12ea59ae514488e333d8451fbf68a
                            End
                        End
                    End
                End
                Begin TextBox
                    IMESentenceMode =3
                    Left =2381
                    Top =850
                    TabIndex =2
                    Name ="Course_Location"
                    ControlSource ="Course_Location"
                    GUID = Begin
                        0x139fdfe9aad7034aa7ad2f137e63e486
                    End
                    Begin
                        Begin Label
                            Left =680
                            Top =850
                            Width =1290
                            Height =225
                            Name ="Bijschrift2"
                            Caption ="Course_Location:"
                            GUID = Begin
                                0x8f36ef586867bb4faf9cbc80efd0a570
                            End
                        End
                    End
                End
            End
        End
    End
End

【讨论】:

如何在 django 中为生成的报告 pdf 提供下载链接

】如何在django中为生成的报告pdf提供下载链接【英文标题】:howtogiveadownloadlinkforgeneratedreportedpdfindjango【发布时间】:2012-04-1304:07:27【问题描述】:我已通过views.py中的以下代码从数据库中生成了一份PDF报告resp=HttpResponse(mimetype=\'... 查看详情

VBA MS 项目将多个自定义报告以 PDF 格式保存到位置

】VBAMS项目将多个自定义报告以PDF格式保存到位置【英文标题】:VBAMSProjectSaveMultipleCustomReportsasPDFstoLocation【发布时间】:2017-11-0113:30:10【问题描述】:我正在尝试使用VBA将MSProject中生成的7个单独的自定义报告作为PDF保存到驱动... 查看详情

python生成图文并茂的pdf报告(代码片段)

reportlab是Python的一个标准库,可以画图、画表格、编辑文字,最后可以输出PDF格式。它的逻辑和编辑一个word文档或者PPT很像。有两种方法:1)建立一个空白文档,然后在上面写文字、画图等;2)建立... 查看详情

python生成图文并茂的pdf报告(代码片段)

reportlab是Python的一个标准库,可以画图、画表格、编辑文字,最后可以输出PDF格式。它的逻辑和编辑一个word文档或者PPT很像。有两种方法:1)建立一个空白文档,然后在上面写文字、画图等;2)建立... 查看详情

python使用fpdf生成数据报告pdf文件

python使用fpdf生成数据报告pdf文件目录python使用fpdf生成数据报告pdf文件#报告生成整体代码 查看详情

如何使用 angular9 和 Jasmine 为所有组件生成 .pdf 格式的单元测试用例代码覆盖率报告

】如何使用angular9和Jasmine为所有组件生成.pdf格式的单元测试用例代码覆盖率报告【英文标题】:Howtogenerateunittestcasecodecoveragereportin.pdfforallcomponentsusingangular9andJasmine【发布时间】:2021-06-2104:04:18【问题描述】:.html格式的Angular支... 查看详情

执行 vba DoCmd.OutputTo 命令以创建报告的 PDF 时,为啥 Access 会关闭/重新打开

】执行vbaDoCmd.OutputTo命令以创建报告的PDF时,为啥Access会关闭/重新打开【英文标题】:WhydoesAccessclose/reopenwhenavbaDoCmd.OutputTocommandisexecutedtocreateaPDFofareport执行vbaDoCmd.OutputTo命令以创建报告的PDF时,为什么Access会关闭/重新打开【发... 查看详情

在批准报价、运行报告、生成 PDF 并发送带有 PDF 作为附件的电子邮件

】在批准报价、运行报告、生成PDF并发送带有PDF作为附件的电子邮件【英文标题】:OnApprovalOfQuotation,RunReport,GeneratePDFandSendanEmailWithPDFasattachment【发布时间】:2014-06-1717:47:00【问题描述】:我正在使用CRMONLINE2013。如何自动化以下... 查看详情

通过 VBA 自动使用查询从 Ms Access 2007 生成报告

】通过VBA自动使用查询从MsAccess2007生成报告【英文标题】:GenerateReportsfromMsAccess2007UsingQueriesautomaticallyviaVBA【发布时间】:2010-02-1213:33:39【问题描述】:我有一些查询需要导出到报告中,我希望每次打开数据库时都能自动完成。... 查看详情

最常用的生成 PDF 报告的方法(JavaScript、node.js)?

】最常用的生成PDF报告的方法(JavaScript、node.js)?【英文标题】:MostusedapproachtogenerateaPDFreport(JavaScript,node.js)?【发布时间】:2013-06-2405:27:46【问题描述】:任何从事此类工作的人都可以描述一般过程吗?我现在很困惑。我所说... 查看详情

Excel VBA - 访问网站,生成报告并在 IE 对话框栏上按保存

】ExcelVBA-访问网站,生成报告并在IE对话框栏上按保存【英文标题】:ExcelVBA-AccessWebsite,generatereport&presssaveonIEdialogbar【发布时间】:2020-04-2311:20:35【问题描述】:我有一个关于某个主题的问题,该主题已在其他一些线程和论坛... 查看详情

如何将流式查询的结果保存为 PDF / XLSX(用于生成报告)?

】如何将流式查询的结果保存为PDF/XLSX(用于生成报告)?【英文标题】:HowtosaveresultsofstreamingqueryasPDF/XLSX(forreportgeneration)?【发布时间】:2019-12-1905:49:41【问题描述】:很想知道我们是否可以使用火花流/火花结构化流生成PDF或XL... 查看详情

如何使用 thymeleaf 作为模板引擎生成 pdf 报告? [关闭]

】如何使用thymeleaf作为模板引擎生成pdf报告?[关闭]【英文标题】:Howtogeneratepdfreportusingthymeleafastemplateengine?[closed]【发布时间】:2016-05-2102:44:02【问题描述】:我想在springmvc应用程序中创建pdf报告。我想用themeleaf来设计html报告... 查看详情

报告格式化 VBA 代码

】报告格式化VBA代码【英文标题】:ReportingonformattingVBAcode【发布时间】:2016-10-1614:20:27【问题描述】:我有一个包含步骤列表文本框的报告。我需要根据基于查询的特定条件使用VBA代码调整它的背景颜色。我已经在详细信息面... 查看详情

Birt 不生成 PDF 和 XLS 报告

】Birt不生成PDF和XLS报告【英文标题】:BirtnotgeneratingPDFandXLSreport【发布时间】:2014-09-2600:49:49【问题描述】:我使用的是Birt4.4,我的html报告工作正常,但xls和pdf文件抛出输出格式不支持错误org.eclipse.birt.report.engine.api.EngineExceptio... 查看详情

生成 Reporting Services 2005 PDF 报告并将其存储在磁盘上

】生成ReportingServices2005PDF报告并将其存储在磁盘上【英文标题】:GeneratingaReportingServices2005PDFreportandstoringitondisk【发布时间】:2010-09-1520:38:06【问题描述】:是否有一种简单的方法可以从已上传到报告管理器的RDL生成PDF报告并将... 查看详情

在python中生成多个pdf报告(代码片段)

...他499.每次我尝试它都会覆盖以前的结果。我的随机角色生成器:importrandomimportsyssys.stdout=ope 查看详情

使用 s-s-rS 和 ASP.NET 合并以 Pdf 格式生成的报告

】使用s-s-rS和ASP.NET合并以Pdf格式生成的报告【英文标题】:MergingReportsGeneratedinPdfformatbyusings-s-rSandASP.NET【发布时间】:2011-12-0305:19:08【问题描述】:有没有办法通过将许多rdlc报告合并到.net框架中的一个大pdf中来创建报告书。通... 查看详情