ACCESS 如何用 Docmd.OutputTo 将查询导出为 Excel 97-2003 格式?

如何用 Docmd.OutputTo 将查询导出为 Excel 97-2003 格式?

 

如何用 Docmd.OutputTo 将查询导出为 Excel 97-2003 格式?
我用了 acFormatXLS 常数,导出的却是 Excel 95 的格式,如何才能变成 Excel 97-2003的格式?


针对上述问题,我做了以下试验

DoCmd.OutputTo acOutputTable, "表1", acFormatXLS
'能运行,但是是 Excel 5-7 格式,95格式
DoCmd.OutputTo acOutputTable, "表1", "Microsoft Excel (*.xls)"
'能运行,但是是 Excel 5-7 格式,95格式
DoCmd.OutputTo acOutputTable, "表1", "MicrosoftExcel"
'能运行,但是是 Excel 5-7 格式,95格式
DoCmd.OutputTo acOutputTable, "表1", "MicrosoftExcel哼哼哈咿"
'能运行,但是是 Excel 5-7 格式,95格式
'昏过去,这也能认啊?!!!!!!

DoCmd.OutputTo acOutputTable, "表1", "Excel"
'不能运行,提示错误


测试的结果令人费解。

最终我想到了 Access 2003 中有另一方法导出查询为 Excel 格式文件,就是 TransferSpreadsheet 方法,其中 SpreadsheetType  参数可选 AcSpreadSheetType ,97-2003格式的常数为 acSpreadsheetTypeExcel9

Debug.Print acSpreadsheetTypeExcel9

该常数的输出值为 8,于是直接套用

DoCmd.OutputTo acOutputTable, "表1", 8
'能运行,成功,是 Excel 97-2003 格式
DoCmd.OutputTo acOutputTable, "表1", acSpreadsheetTypeExcel9
'能运行,成功,是 Excel 97-2003 格式


其结果绝对是让人昏厥!

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
帮我优化以下代码,不使用ADO ,然后每次导出不同的10000条记录至新的EXECL文件中:Dim strSQL As String Dim strFileName As String Dim i As Long Dim batchSize As Long '每批次导出的记录数 Dim batchCount As Long '批次计数器 Dim exportCount As Long '导出计数器 '设置导出文件路径和文件名 strFileName = "C:\Users\icd\Desktop\流水分割\" batchSize = 10000 '每批次导出的记录数 DoCmd.SetWarnings False '暂时关闭Access的警告信息 DoCmd.RunSQL "SELECT 导出数据.* INTO ExportData FROM 导出数据" '将表导入临时表ExportData DoCmd.SetWarnings True '重新开启Access的警告信息 Set rs = CurrentDb.OpenRecordset("SELECT * FROM ExportData", dbOpenSnapshot) '打开临时表ExportData '循环导出数据 Do While Not rs.EOF If exportCount Mod batchSize = 0 Then '每批次导出到一个新的文件 If exportCount <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(batchCount, "000000") & ".xlsx", True End If batchCount = batchCount + 1 End If exportCount = exportCount + 1 rs.MoveNext Loop '导出最后一份文件 If exportCount Mod batchSize <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(batchCount, "000000") & ".xlsx", True End If rs.Close Set rs = Nothing DoCmd.SetWarnings False '暂时关闭Access的警告信息 DoCmd.RunSQL "DROP TABLE ExportData" '删除临时表ExportData DoCmd.RunSQL "DELETE 导出数据.* FROM 导出数据" '删除导出数据内容 DoCmd.SetWarnings True '重新开启Access的警告信息
最新发布
06-09
以下是优化后的代码,使用了Recordset来处理数据,同时每次导出10000条记录到新的Excel文件中: Dim strSQL As String Dim strFileName As String Dim i As Long Dim batchSize As Long '每批次导出的记录数 Dim batchCount As Long '批次计数器 Dim exportCount As Long '导出计数器 Dim rs As Recordset '设置导出文件路径和文件名 strFileName = "C:\Users\icd\Desktop\流水分割\" batchSize = 10000 '每批次导出的记录数 '将表导入临时表ExportData DoCmd.SetWarnings False '暂时关闭Access的警告信息 DoCmd.RunSQL "SELECT 导出数据.* INTO ExportData FROM 导出数据" DoCmd.SetWarnings True '重新开启Access的警告信息 'SQL语句,使用Recordset来处理数据 strSQL = "SELECT * FROM ExportData" Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot) '循环导出数据 Do While Not rs.EOF If exportCount Mod batchSize = 0 Then '每批次导出到一个新的文件 If exportCount <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(batchCount, "000000") & ".xlsx", True End If batchCount = batchCount + 1 End If exportCount = exportCount + 1 rs.MoveNext Loop '导出最后一份文件 If exportCount Mod batchSize <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(batchCount, "000000") & ".xlsx", True End If '关闭Recordset和删除临时表ExportData rs.Close Set rs = Nothing DoCmd.SetWarnings False '暂时关闭Access的警告信息 DoCmd.RunSQL "DROP TABLE ExportData" '删除临时表ExportData DoCmd.RunSQL "DELETE 导出数据.* FROM 导出数据" '删除导出数据内容 DoCmd.SetWarnings True '重新开启Access的警告信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值