导出访问查询没有格式

时间:2016-06-17 08:58:00

标签: vba ms-access export-to-csv

相对简单,但我似乎无法解决这个问题。我想将访问中的查询导出到.csv(制表符或逗号分隔)。当我通过向导手动执行它时,它工作正常。但是当我通过vba执行此操作时,它会带有表格边框,表格看起来像表格中的边框!

我尝试了两种方法并得到了相同的结果

DoCmd.OutputTo acOutputQuery, "Qry_GRADE", "MS-DOSText(*.txt)",_
 "grade.csv", True, *ExportSpec*, , acExportQualityScreen

我使用或不使用" ExportSpec",这是我手动导出时创建的规范。

这是第二种方法:

Dim testSQL As String
Dim qd As DAO.QueryDef

    testSQL = "SELECT * FROM Qry_Grade"
    Set qd = db.CreateQueryDef("tmpExport", testSQL)
    DoCmd.TransferText acExportDelim, , "tmpExport",_
         "C:\Users\Databoe\Documents\KidsTV\grade.csv"
    db.QueryDefs.Delete "tmpExport"

This is a solution我发现这似乎有点矫枉过正

这就是输出的样子:

screenshot exported query

在Excel中打开文件时,您可以看到它实际上没有拆分任何列,并且每隔一行只是一个" - "' s

2 个答案:

答案 0 :(得分:3)

直接excel文件导出DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, myQueryName, myExportFileName, True怎么样?

我尝试了您的方法,但我只是在您第一次尝试DoCmd.OutputTo acOutputQuery, "Qry_GRADE", "MS-DOSText(*.txt)",_ "grade.csv", True, *ExportSpec*, , acExportQualityScreen时获得了格式化文本,这是预期的,因为它是文本导出而不是csv。

使用第二种方法,我总能得到一个excel兼容的结果。也许你有一个错误陷阱隐藏错误,第一个grade.csv没有被覆盖。为第二种方法使用不同的文件名来防止这种情况发生。

找到第二个陷阱。您没有在第一种方法中指定完整文件路径,但在第二种方法中。如果C:\Users\Databoe\Documents\KidsTV不是您的默认文档路径,则您在不同的文件夹中有2个grade.csv,但您可能认为只有一个被覆盖的文件夹。

答案 1 :(得分:1)

我自己也遇到了这个问题,并找到了一个很棒的工作。它不会保存为.csv,但您可以另存为逗号分隔的.txt文件。

  • 使用“外部数据”选项卡上的导出向导将查询导出为.txt文件而不进行格式化。
  • 导出文件后,会出现一个对话框,询问您是否要保存导出步骤。单击该框并保存导出。
  • 宏向导中有一个名为“运行已保存的导入/导出”的操作。选择此操作,然后从下拉菜单中选择已保存的导出。