2012-07-16 102 views
1

我期待根據客戶ID將多頁訪問報告拆分爲單個pdf文件,然後根據客戶名稱(或ID)保存這些pdf文件。根據客戶ID將多頁MS Access報告拆分爲單個pdf文件?

我已經研究過將報告「打印」/「轉換」爲一個大型pdf文件並將其拆分到那裏,但一些客戶發票跨越兩個+頁面,因此一頁一頁地分割一個pdf文件不會工作。

任何幫助將不勝感激;如果任何人需要更多的澄清任何事情,請不要猶豫,讓我知道。

回答

1

使用Access 2007(請參閱下面的註釋)或更高版本可以很容易。

使用WhereCondition參數打開您的報告以將記錄源限制爲特定客戶。

DoCmd.OpenReport "rptFoo", acViewPreview, , "Customer_ID = 1" 

然後使用OutputTo將其保存爲帶有您提供的文件名的PDF。

DoCmd.OutputTo acOutputReport, "", acFormatPDF, "Spacely_Sprockets.pdf" 

之後關閉報告。

DoCmd.Close acReport, "rptFoo" 

您可以創建它會顯示Customer_IDCustomer_Name數據的記錄過程,然後使用這些命令3從各行的值。

如果您的Access版本比2007年早,那麼您必須告訴我們您用於創建PDF文件的方法。

注意:對於Access 2007,Office Service Pack 2提供了Built-in Save As PDF/XPS support

2

PDF打印可用的MS Access 2010年,2007年,您可以安裝微軟的附加:前Print, share, and protect files in the PDF and XPS file formats

對於版本2007,您可以使用:

  • 斯蒂芬LeBan的ReportToPDF只包含兩個DLL,但僅適用於MS Access

  • CutePDF是免費且易於使用的。

  • PDFCreator也是免費的,可以用VBA實現完全自動化(雖然我最近沒有使用過它,我相信這個功能仍然可用)

  • 任意數量的付費PDF創造者。

的自2003 version(也OpenReport 2010

WHERE論據的OpenReport已提供給打印所有客戶的一份報告,2003年版,2007年和2010年,您可以通過相關文件和

Dim rs AS DAO.Recordset 
Set rs = CurrentDB.OpenRecordset("SELECT DISTINCT CustimerID FROM Invoices") 

    Do While Not rs.EOF 
     ''expression.OpenReport(ReportName, View, FilterName, 
     ''  WhereCondition, WindowMode) -- 2010 has OpenArgs 

     DoCmd.OpenReport "Invoices",<..>,,"CustomerID=" & rs!CustomerID 
     ''OutputTo or other relevant code 

     rs.MoveNext 
    Loop 

獲取PDF然後取決於您的版本和安裝的工具。例如,如果您正在使用PDFCreator或CutePDF,則可以使用acViewNormal作爲視圖。 PDFCreator設置將允許您提前分配一個文件名,對於CutePDF,您將不得不填寫一個文件名。對於Access 2007和2010,您可以使用OutputTo,如前所述,所以acViewPreview是最好的。

要通過電子郵件發送2007年和2010年的報告,您可以使用SendObject。對於較早的版本,您將需要更多的代碼。最簡單的選擇可能是自動化Outlook。

相關問題