是否可以同时将多个报告导出为 PDF。如果是,任何人都可以让我知道该怎么做吗?我在网上搜索了很多,但找不到答案。感谢您花时间回答我的问题。
努普尔
是否可以同时将多个报告导出为 PDF。如果是,任何人都可以让我知道该怎么做吗?我在网上搜索了很多,但找不到答案。感谢您花时间回答我的问题。
努普尔
“同时”是不可能的,因为 VBA 本身不是多线程的。必须连续运行和导出每个报告。整个过程可以使用 VBA 自动化以使其更容易。
如何以自动化方式完成此操作的一个示例是为首先运行它的每个报告创建一个宏,然后导出结果。使用 VBA 模块依次调用每个宏。您可能需要在每次调用宏之间实现 WAIT 以允许它们有时间执行。
完成后,用户所要做的就是启动 VBA 模块(最简单的按钮单击),然后等待……报告将自动一次吐出一个。
我正在做类似的事情;我有一个季度销售报告,我需要根据该季度每个月的 3 个报告运行。
我找到了一个名为 PDFTK 的实用程序
https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
这似乎是我想要的,在报告运行后,它将它们合并为一个报告。
我的问题是从子目录深处的 DOS 运行它。我创建了一个批处理文件,它运行该实用程序并将 M1、M2 和 M3 报告连接到一个文件中,但是让 MSFT Access 打开,然后更改到正确的目录,并调用批处理文件并以某种方式让它知道我' m 试图连接这个特定子目录中的文件是有问题的。
这是我到目前为止得到的批处理文件:
pdftk m1.pdf m2.pdf m3.pdf cat output salesreportqtr.pdf
del m1.pdf
del m2.pdf
del m3.pdf
但是,因为目录每次都在变化,我无法让程序正确调用它。如果 USER 弹出到 DOS(对我的用户来说不可能,他们甚至拒绝查看 DOS)并运行程序,一切都会正常工作。
您可以使用 DoCmd 对象的 SendObject 方法:
http://msdn.microsoft.com/en-us/library/bb214075(v=office.12).aspx
DoCmd.SendObject acSendReport, "Employees", acFormatPDF, _
"Nancy Davolio; Andrew Fuller", "Joan Weber", , _
"Current Spreadsheet of Employees", , False
为您要导出的每个报表创建一个宏,然后使用 Shell 命令调用多个 Access 实例(VBA 不会等待这个完成)。
例如,如果您有一个名为 的报表Report1
,请创建一个名为的宏PrintReport1
来导出 PDF,然后关闭数据库。
然后在您的 VBA 代码中运行:
Shell("msaccess ""C:\DatabasePath\Database.accdb"" /x PrintReport1")
Shell("msaccess ""C:\DatabasePath\Database.accdb"" /x PrintReport2")
没有评论这方面的表现如何,但它会起作用。