Powershell 与 Access 2007 的交互,如何将报告另存为 PDF?

Posted

技术标签:

【中文标题】Powershell 与 Access 2007 的交互,如何将报告另存为 PDF?【英文标题】:Powershell Interaction with Access 2007, how to Save Report as PDF? 【发布时间】:2010-08-30 19:44:37 【问题描述】:

我有一个访问数据库和该数据库中的报告。我正在使用 access.application comobject 来获得访问权限,即

$db = New-Object -ComObject Access.Application
$db.OpenCurrentDatabase("foo.accdb")

这很好用。但是,正如另一个 similar 问题中所建议的那样,我无法使用 DoCmd.OutputTo 方法从数据库中获取报告。

$db.DoCmd.OutputTo(3,"The_Report","acFormatPDF","C:\The_Report.PDF")

当我执行上述命令时,错误返回指出:

使用“4”参数调用“OutputTo”的异常:“您尝试输出当前对象的格式不可用。”

我已确保已安装“保存为 pdf”插件。除此之外,我无法弄清楚是什么阻止了该对象以请求的格式输出。我错过了什么吗?

【问题讨论】:

【参考方案1】:

acFormatPDF 是一个常量,因此将常量名称放在引号中似乎是错误的。我尝试不带引号,但 Powershell 似乎无法识别该常量。所以我尝试了该常量的字符串值,用引号引起来,它起作用了。

我基本上迷失了这个 Powershell 的东西,但建议你试试:

$db.DoCmd.OutputTo(3,"The_Report","PDF Format (*.pdf)","C:\The_Report.PDF")

【讨论】:

这是因为当使用 COM 自动化时,您不能使用在您正在自动化的应用程序中定义的常量名称,除非您引用了允许您访问这些定义的类型库常数。 “PDF 格式 (*.pdf)”是存储在常量 acFormatPDF 中的文字值。顺便说一句,我很惊讶地发现这一点,因为我从未遇到过返回字符串值的命名 Access 常量(除了那些明显的字符串值,如 vbNullString 和 vbCrLf,但这些是 VBA 常量,而不是 Access 常量)。我希望常数是一个整数! PDF 格式 (*.pdf) 看起来像您在“另存为”下拉菜单中看到的... 这个答案似乎让我走得更远。现在它告诉我“Microsoft Office Access 找不到对象 'The_Report'” 任何其他名称的报告都很难找到吗? 谢谢汉斯...我用新的测试报告创建了一个新的数据库,并且能够让它工作。一定是我原来的数据库,但至少我现在掌握了语法。奇怪的非整数常数和所有哈哈

以上是关于Powershell 与 Access 2007 的交互,如何将报告另存为 PDF?的主要内容,如果未能解决你的问题,请参考以下文章

Access 2007 与 Sharepoint 2007 任务列表的集成

MS Access:Access 2016 应用程序能否与 Access 2007 一起使用?

Access2007Access2007的打开方式

在 Linux 上将 PHP 与 MS Access 2007-2010 连接

Access 2007 中的格式组合框

同时运行 Access 2003 和 2007 是不是安全?