2010-08-30 54 views
0

我有一個訪問數據庫和該數據庫中的報告。我使用access.application comobject來獲得訪問權限,即Powershell與Access 2007交互,如何將報表另存爲PDF?

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

這工作正常。但是,正如另一個similar問題所建議的,我無法使用DoCmd.OutputTo方法將報表從數據庫中取出。

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

當我執行上述命令,錯誤返回,指出:

異常調用「OutputTo」與「4」的說法(S):「的格式中,你正試圖輸出當前對象不可用「

我確定已經安裝了」save to pdf「加載項。除此之外,我無法弄清楚在請求中輸出的對象是什麼格式,我錯過了什麼嗎?

回答

2

acFormatPDF是一個常量,因此將常量名放在引號中似乎是錯誤的。我試過沒有引號,但Powershell似乎並不認識這個常量。所以我嘗試了這個常量的字符串值,用引號括起來,它工作。

我基本上失去了與這個Powershell的事情,但建議你試試:

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

這是因爲COM自動化的時候,你不能使用你自動除非你的應用程序中定義的常量名已經得到了類型庫的引用,允許你訪問那些常量的定義。 「PDF格式(* .pdf)」是存儲在常量acFormatPDF中的文字值。順便說一句,我很驚訝地發現這一點,因爲我從來沒有遇到過一個返回字符串值的命名訪問常量(除了那些明顯的字符串值,如vbNullString和vbCrLf,但這些是VBA常量,而不是訪問)。我期望這個常量是一個整數! – 2010-08-30 20:47:26

+0

PDF格式(* .pdf)看起來像你會在「另存爲」下拉菜單中看到的... – MattUebel 2010-08-30 20:58:54

+0

這個答案似乎讓我走得更遠。現在它告訴我,「Microsoft Office Access無法找到對象'The_Report'」難道要用其他任何名稱找到報告? – MattUebel 2010-08-30 21:02:38