如何从Access查询/数据表导出至CSV文件?导出报错求助
Access导出CSV失败但Excel导出正常的问题
问题概况
将数据表导出为CSV文件时持续报错,已自行排查但未解决。导出Excel文件的代码可正常运行,但三条导出CSV的DoCmd.TransferText语句均触发相同错误。查询名称为PromoAPIQuery,错误提示如图所示。
相关VB代码
Private Sub cmdGenerateExcelFilesPM_Click() On Error GoTo HandleError Dim fullPath As String fullPath = CurrentProject.path Dim CaseNumber As String CaseNumber = Forms("Form").Controls("txtCaseNum").Value Dim query As String query = "Select * from PromoAPI" ' 此代码可正常生成Excel文件 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "PromoAPI", CurrentProject.path & "\" & CaseNumber & " Promo API" & Format(Now(), " mm dd yyyy"), True ' 需要导出CSV,但以下三条语句均报错 DoCmd.TransferText acExportDelim, , "PromoAPIQuery", CurrentProject.path & "\" & CaseNumber & " Promo API" & Format(Now(), " mm dd yyyy"), True DoCmd.TransferText acExportDelim, , "query", CurrentProject.path & "\" & CaseNumber & "Promo API" & Format(Now(), " mm dd yyyy"), True DoCmd.TransferText acExportDelim, "", "PromoAPI", CurrentProject.path & "\" & CaseNumber & "Promo API" & Format(Now(), " mm dd yyyy"), True HandleExit: Exit Sub HandleError: MsgBox Err.Description Resume HandleExit End Sub
排查与修复建议
- 补全CSV文件扩展名:所有导出语句都未添加
.csv后缀,Access可能无法识别目标格式,需在文件名末尾补充.csv,示例:CurrentProject.path & "\" & CaseNumber & "_Promo_API_" & Format(Now(), "mm_dd_yyyy") & ".csv" - 修正数据源名称:第二条语句使用变量
query作为数据源,但TransferText要求第三个参数是Access中已存在的查询/表名称,这条语句本身逻辑错误,需替换为实际的对象名(如PromoAPIQuery)。 - 规范文件名格式:文件名中的空格、带空格的日期格式可能触发兼容性问题,建议用下划线替代空格,日期格式改为
mm_dd_yyyy(去掉前后空格)。 - 检查字段类型:如果
PromoAPI表包含OLE对象等特殊字段,TransferText不支持导出这类字段,而Excel导出可以,需修改查询排除此类字段后再导出CSV。 - 添加导出规格(可选):若字段包含逗号、引号等特殊字符,建议手动导出一次CSV并保存导出规格,在
TransferText的第二个参数中填入规格名称,确保导出格式正确。
内容的提问来源于stack exchange,提问作者Natalia Fontiveros
相关产品推荐
相关产品推荐

