2010-04-15 78 views
0

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

  • Access 2007年
  • 数据库在Access 2003格式
  • 出口应该是在Excel 2003中的格式。

该查询包含一个Memo列,最多可包含512个字符。

到目前为止,我已经试过如下:

  • 运行在Access查询,然后复制/粘贴结果表格到Excel中。这工作正常,但需要手动步骤。

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

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

我的问题是,VBA代码截断记录栏255个字符。

什么是最简单的方式编程导出到Excel没有截断?

理想情况下,我想将Access中的数据“推”到Excel而不是其他方式,即我没有试图在Excel中使用“导入外部数据”。

编辑

在回应的评论和响应至今:

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

我还没有尝试导出表,因为能够这样做不会帮助我反正。

...那截断备忘录,就像它

查询确实包含一个ORDER BY子句排序的事情之一,所以导致排序(和待排序)。但它没有在备忘录栏上排序。

这可以通过处理备忘录像左(MyMemo,4096)的东西来避免。

查询中的记录栏已经被处理,并使用类似 “左(更换(MemoColumn,” ... “” ... “),512)” 截断为512个字符。所以使用左(...)似乎没有帮助。使用copyfromrecordset功能

我用Excel自动化与Range.CopyFromRecordSet试图

尝试自动化。在这种情况下,较长的备注字段不会被截断,而是会在最后导出一些垃圾字符。

+0

您可以导出包含备注字段的表吗?我问,因为在查询中截断备注字段是一个常见问题,如果备忘在表导出中被截断,那是一个不同的问题。 – Fionnuala 2010-04-15 19:06:47

+0

如果备忘录限制为512个字符,请查看它是否可以转换为查询中的字符串列并尝试导出。在此发布您的发现。 – shahkalpesh 2010-04-15 19:15:21

+0

只有在查询中才会发生备忘录截断,如果您正在执行截断备忘录的任务之一(例如对其进行排序)。这可以通过使用像Left(MyMemo,4096)这样的东西来处理备忘来避免。 – 2010-04-15 19:49:39

回答

0

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

一旦你有代码运行,然后我建议通过使用后期绑定删除Excel引用。 Late Binding in Microsoft Access

+0

谢谢,我试过CopyRecordset没有成功 - 请参阅编辑问题。 – Joe 2010-04-16 05:46:59

+0

啊,垃圾字符可能是vbCrLF,而Excel只需要或想要vbCr或类似的东西。我现在不记得细节。 – 2010-04-16 21:00:24

相关问题