Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 从MS Access导出为格式化PDF_Ms Access_Pdf_Vba - Fatal编程技术网

Ms access 从MS Access导出为格式化PDF

Ms access 从MS Access导出为格式化PDF,ms-access,pdf,vba,Ms Access,Pdf,Vba,我对MS Access非常陌生。目标是从MS Access数据库导出多个PDF文件。目前,我可以通过以下代码导出多个Excel文件。但我想将其导出为PDF格式,在表格(颜色、字体等)中进行少量的格式更改,并在PDF中添加页眉和页脚注释 Private Sub Command4_Click() Dim rsGroup As DAO.Recordset Dim ColumnName As String Dim myPath As String myPath = "E:\TestExport\"

我对MS Access非常陌生。目标是从MS Access数据库导出多个PDF文件。目前,我可以通过以下代码导出多个Excel文件。但我想将其导出为PDF格式,在表格(颜色、字体等)中进行少量的格式更改,并在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
感谢您,我们的解决方案是正确的。根据所有要导出的查询创建报告,然后在VBA中,使用该方法将报告导出为PDF。下面是一个代码示例:

DoCmd.OutputTo acOutputReport, "MyReportToExport", acFormatPDF, "C:/Users/MyUserAccount/Documents/MyExportedPDF.pdf"
您也可以通过将“acOutputReport”更改为“acOutputQuery”来导出查询,但通过使用报表,您可以对格式进行更多的控制。

的解决方案是正确的方法。根据所有要导出的查询创建报告,然后在VBA中,使用该方法将报告导出为PDF。下面是一个代码示例:

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

您也可以通过将“acOutputReport”更改为“acOutputQuery”来导出查询,但通过使用报表,您可以对格式进行更多的控制。

如上所述,PDF是结构化的、固定格式的文档文件,而不是动态数据文件。考虑下面的例程:

  • 使用完整的表(而不是任何查询)作为预设计报表 记录源。以任何方式(即横向/纵向、标题、字体、颜色)为最终传播或演示设置样式
  • 使用该方法,在打印预览中打开报表,使用该方法的WhereCondition参数有条件地更改报表的“按循环过滤”值
  • 然后运行以在同一循环中将预览的报告输出为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
    

    如上所述,PDF是结构化的、固定格式的文档文件,而不是动态数据文件。考虑下面的例程:

  • 使用完整的表(而不是任何查询)作为预设计报表 记录源。以任何方式(即横向/纵向、标题、字体、颜色)为最终传播或演示设置样式
  • 使用该方法,在打印预览中打开报表,使用该方法的WhereCondition参数有条件地更改报表的“按循环过滤”值
  • 然后运行以在同一循环中将预览的报告输出为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
    

    您好,我建议您根据您的查询创建一个报告,以微调详细信息和格式。报告完成后,只需为任何其他查询创建一个模板,并将vba导出为pdf。您好,我建议根据您的查询创建一个报告,以精细调整详细信息和格式。报告完成后,只需为任何其他查询创建一个模板,然后将vba导出为pdf。谢谢,我在许多论坛上获得了从报告导出pdf的代码。实际上,我想知道一个脚本中的过程/代码来完成所有的事情。在我给出的代码中,您可以看到一个查询正在为循环随机创建,在完成循环后,它被删除。是否有任何程序/代码可以将查询保存为格式化报告并将报告导出为PDF格式。我试了很多,但是没有运气。你能帮我一点忙吗?再次感谢Hanks,我从许多论坛的报告中获得了导出PDF的代码。实际上,我想知道一个脚本中的过程/代码来完成所有的事情。在我给出的代码中,您可以看到一个查询正在为循环随机创建,在完成循环后,它被删除。是否有任何程序/代码可以将查询保存为格式化报告并将报告导出为PDF格式。我试了很多,但是没有运气。你能帮我一点忙吗?再次感谢