自动打印现有的 MS Access 报告(最好使用 Python,但对替代方案持开放态度)

Lev*_*von 3 printing ms-access win32com python-3.x

我有大约 30 个.accdb文件,全部包含一个同名的报告。我想自动将报告保存为 PDF 以便后续打印。就这样,无需查询,无需修改,只需将保存的报告打印为 PDF。

我可以成功打开数据库,但我不知道如何执行其余操作。

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'

a.Quit()
Run Code Online (Sandbox Code Playgroud)

FWIW,我是一名老师,这将帮助我对提交的材料进行评分,并减轻学生在考试结束时打印的负担。使用 Windows 10。

我愿意使用任何其他脚本语言(powershell?),这将帮助我轻松地自动执行此任务。

Eri*_*k A 5

您可以使用DoCmd.OpenReport自动打开和打印报告。

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'
a.DoCmd.OpenReport('My_Report')
a.Quit()
Run Code Online (Sandbox Code Playgroud)

默认情况下,DoCmd.OpenReport将使用报告设置中指定的打印机打印报告。我有代码可以在打印预览中打开它并指定打印机。

如果您想导出为 PDF,您也可以自动执行:

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'
a.DoCmd.OutputTo(3, report_name, r'PDF Format (*.pdf)', r'C:\Path\To\file.pdf')
a.Quit()
Run Code Online (Sandbox Code Playgroud)