相对简单,但我似乎无法解决这个问题。我想将访问中的查询导出到.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我发现这似乎有点矫枉过正
这就是输出的样子:
在Excel中打开文件时,您可以看到它实际上没有拆分任何列,并且每隔一行只是一个" - "' s
答案 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文件。