2016-12-08 112 views
0

我對MS Access非常陌生。目標是從MS Access DB導出多個PDF文件。目前我可以通過以下代碼導出多個Excel文件。但是我想通過表格(顏色,字體等)中的少量格式更改將其導出爲PDF,並向PDF添加頁眉&頁腳註釋。從MS Access輸出格式化的PDF

Private Sub Command4_Click() 
Dim rsGroup As DAO.Recordset 
Dim ColumnName As String 
Dim myPath As String 

myPath = "E:\TestExport\" 

Set rsGroup = CurrentDb.OpenRecordset("SELECT DISTINCT TableName.Column FROM TableName", dbOpenDynaset) 

Do While Not rsGroup.EOF 
    ColumnName = rsGroup!Column 

    Dim rsExportSQL As String 
    rsExportSQL = "SELECT * FROM TableName WHERE TableName.Column='" & ColumnName & "'" 

    Dim rsExport As DAO.QueryDef 
    Set rsExport = CurrentDb.CreateQueryDef("myExportQueryDef", rsExportSQL) 


    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "myExportQueryDef", myPath & RegionName & ".xls", True 

    CurrentDb.QueryDefs.Delete rsExport.Name 

    rsGroup.MoveNext 
Loop 

End Sub 

感謝

+1

您好,我會建議創建一個基於你那個查詢微調的細節和格式的報告。報告完成後,只需爲其他查詢創建一個模板,然後將vba導出爲pdf。 – Lybren

回答

1

如前所述,PDF是結構化的,固定格式的文檔文件而不是動態數據文件。考慮以下例程:

  1. 使用全表(而不是任何查詢)作爲 記錄源預設計報表。以任何方式(即風景/人像,標題,字體,顏色)對其進行設計,以便最終傳播或呈現。
  2. 使用DoCmd.OpenReport方法,在打印預覽中打開報告,使用該方法的參數WhereCondition有條件地更改報告的循環值篩選。
  3. 然後運行DoCmd.OutputTo在同一個循環中將預覽報告輸出爲PDF格式。注意:全表從不輸出,只有過濾的記錄。

VBA代碼

Private Sub Command4_Click() 
    Dim rsGroup As DAO.Recordset 
    Dim ColumnName As String, myPath As String 

    myPath = "E:\TestExport\" 

    Set rsGroup = CurrentDb.OpenRecordset("SELECT DISTINCT Column FROM TableName", _ 
             dbOpenDynaset)   
    Do While Not rsGroup.EOF 
    ColumnName = rsGroup!Column 

    ' OPEN REPORT, FILTERING RECORDSOURCE BY COLUMN VALUE 
    DoCmd.OpenReport "ReportName", acViewPreview, , "Column='" & ColumnName & "'" 
    ' OUTPUT REPORT TO FILE 
    DoCmd.OutputTo acOutputReport, "ReportName", acFormatPDF, _ 
            myPath & ColumnName & ".pdf", False 
    ' CLOSE PREVIEW 
    DoCmd.Close acReport, "ReportName" 

    rsGroup.MoveNext 
    Loop 

    rsGroup.Close 
    Set rsGroup = Nothing 
End Sub 
1

Lybren的解決辦法是採取正確的方法。創建要導出的所有查詢的報告,然後在VBA中使用Docmd.OutputTo方法將報告導出爲PDF。下面是一個代碼示例:

DoCmd.OutputTo acOutputReport, "MyReportToExport", acFormatPDF, "C:/Users/MyUserAccount/Documents/MyExportedPDF.pdf" 

你也只是通過改變「acOutputReport」到「acOutputQuery」,但通過使用報表導出查詢,您可以更好的格式更多的控制。

+0

謝謝,我得到了許多論壇中的報告導出PDF的代碼。其實我想知道一個腳本中的程序/代碼來完成所有的事情。在我給定的代碼中,你可以看到一個查詢是隨機創建for循環,並在完成循環後被刪除。只要有任何程序/代碼,我可以將查詢保存爲格式化報告並將報告導出爲PDF。我嘗試了很多,但沒有運氣。你能幫我一點嗎?再次感謝 –