如何自动从Access 2007导出到Excel 2003

时间:2010-04-15 16:31:20

标签: excel ms-access export-to-excel

我想自动将Access查询的结果导出到Excel。我的环境是:

  • Access 2007
  • Access 2003格式的数据库
  • 导出应采用Excel 2003格式。

该查询包括一个最多可包含512个字符的备注列。

到目前为止,我已经尝试了以下内容:

  • 在Access中运行查询,然后将结果网格复制/粘贴到Excel中。这很好,但需要手动步骤。

  • 运行一些使用DoCmd.TransferSpreadsheet导出查询的VBA代码,如下所示:

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MyQuery", "MyFile.xls"

我遇到的问题是VBA代码会将Memo列截断为255个字符。

在没有这种截断的情况下以编程方式导出到Excel的最简单方法是什么?

理想情况下,我想将数据从Access“推送”到Excel而不是相反,即我没有尝试在Excel中使用“导入外部数据”。

修改

回应迄​​今为止的评论和回应:

  

您可以导出包含备注字段的表吗?

我还没有尝试导出表格,因为无论如何能够帮助我。

  

...截断备忘录的一件事,比如在它上面进行排序

查询确实包含ORDER BY子句,因此结果 排序(并且必须排序)。但它没有在备忘录栏中排序。

  

通过使用Left(MyMemo,4096)等处理备忘录可以避免这种情况。

查询中的备注列已经过处理,并使用“Left(Replace(MemoColumn,”......,“”“),512)”“(例如,”删除(MemoColumn,“......”,“...”),“512”)将其截断为512个字符。因此使用Left(...)似乎没有帮助。

  

尝试使用copyfromrecordset功能自动化

我尝试过使用Excel自动化和Range.CopyFromRecordSet。在这种情况下,较长的备注字段不会被截断,而是在末尾导出一些垃圾字符。

1 个答案:

答案 0 :(得分:0)

尝试使用copyfromrecordset功能自动执行。虽然我不记得255个字符的任何问题,但可能仍然存在限制。 Modules: Transferring Records to Excel with Automation

运行代码后,我建议使用后期绑定删除Excel引用。 Late Binding in Microsoft Access