将Access 2013 VBA中的报表导出到Excel工作错误,与内置导出不同

时间:2014-11-17 12:58:19

标签: excel vba excel-vba ms-access access-vba

想知道是否有人遇到过这个问题。我正在使用Access 2013数据库生成一些报告。这些报告需要导出到Excel文件中。我在VBA中使用

执行此操作
DoCmd.OutputTo acOutputReport, "ReportName", acFormatXLS, "fileName.xls"  

创建了文件,但是,它们的内容并不像预期的那样,特别是与通过运行内置Access获得的XLSX文件进行比较时。 "外部数据" - >"导出到Excel电子表格"功能。
例如,在其中一个文件中,通过运行报告的行源查询获得的表的行不会前进,导致同一行的多次重复。在另一个格式是错误的 再次,使用Access内置"导出到Excel"功能,结果是正确的 问题:是否有另一种将报告导出到Excel的方法?我做错了吗? 谢谢!

编辑:只是为了澄清:格式化只是次要问题。数据本身保存错误。主要问题是从某一行开始,其余行只是该行的副本,它们不会前进。

1 个答案:

答案 0 :(得分:0)

没有"好"不幸的是,在Access中这样做的方法。您可以将其导出为PDF并使其看起来像Access中的报表,或者您可以使用acOutputReport导出它,然后运行一些代码以在Excel中重新格式化它。

DoCmd.OutputTo acOutputReport, "ReportName", acFormatXLS, "fileName.xls" 
Call ModifyExportedExcelFileFormats("filename.xls", "SheetName")

然后:

Public Sub ModifyExportedExcelFileFormats(sFile As String, sSheet As String)
On Error GoTo Proc_Error

Dim xlApp As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")
Set xlSheet = xlApp.Workbooks.Open(sFile).Sheets(1)

   With xlApp
      .Application.Sheets(sSheet).Select
      .Application.Rows("1:1").Select
      .Application.Selection.Font.Bold = True
      .Application.range("A1").Select
      .Application.Selection.AutoFilter
      .Application.Cells.Select
      .Application.Selection.Columns.AutoFit
      .Application.range("A1").Select
      .Application.Activeworkbook.Save
      .Application.Activeworkbook.Close
      .Quit
   End With

Exit_Proc:
Set xlApp = Nothing
Set xlSheet = Nothing
Exit Sub