使用 VBA 将表单另存为报表

Posted

技术标签:

【中文标题】使用 VBA 将表单另存为报表【英文标题】:Save a Form as a Report using VBA 【发布时间】:2020-07-03 05:29:39 【问题描述】:

在 MS Access 中,可以使用“将对象另存为”功能(Office 按钮 -> 另存为 -> 将对象另存为“将当前数据库对象另存为新对象”)将表单转换为报表。

我希望使用 VBA 获得相同的功能,但在我看来,以下相关的 DoCmd 方法都不适合 CopyObject、OutputTo、Save、TransferDatabase。

我找不到任何有用的信息,除了 blog post,其中使用 SendKeys 语句提供了代码示例,但它似乎不起作用。

有什么建议吗?

【问题讨论】:

【参考方案1】:

无法使用 VBA 将表单转换为报表。即使使用 Sendkeys(确实应该避免,因为错误的应用程序可能会获取按键)也不是一种有效的方法,因为某些控件无法正确转换。

相反,您应该从头开始设计一个带有所需标题/排序/分组的报表 - 它看起来会好得多。

问候,

【讨论】:

【参考方案2】:

感谢 MajP 在 access-programmers 论坛post 上的一些提示,我找到了一种适合我需要的方法,尽管它使用了 sendkey 功能:

strFormName = "formname"
strReportName = "reportname"

DoCmd.SelectObject acForm, strFormName, True

SendKeys strReportName & "~"

RunCommand acCmdSaveAsReport

strFormName 必须包含要保存为报表的表单的名称,其名称必须包含在 strReportName 中。

【讨论】:

以上是关于使用 VBA 将表单另存为报表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用以下 VBA 代码在生成“另存为”对话框并导出 Access 查询的表单上创建命令按钮?

VBA 另存为结果未定义的文件类型

将表单结果另存为 PDF

使用 Angularjs 和 Nodejs 从 HTML 表单另存为 JSON 文件

将表单另存为图像(屏幕截图)

MS Word 2013 表单,使用宏创建另存为并提交按钮