【问题标题】:How to automate export from Access 2007 to Excel 2003如何自动从 Access 2007 导出到 Excel 2003
【发布时间】:2010-04-15 16:31:20
【问题描述】:

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

  • 访问 2007
  • Access 2003 格式的数据库
  • 导出应为 Excel 2003 格式。

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

到目前为止,我已经尝试了以下方法:

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

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

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

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

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

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

编辑

响应cmets和迄今为止的响应:

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

我没有尝试导出表格,因为这样做对我没有帮助。

...截断备忘录的事情之一,例如对其进行排序

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

可以通过使用 Left(MyMemo, 4096) 之类的方法处理备忘录来避免这种情况。

查询中的备注列已使用“Left(Replace(MemoColumn, "...", "..."), 512)”之类的内容进行处理并截断为 512 个字符。所以使用 Left(...) 似乎没有帮助。

尝试使用 copyfromrecordset 函数实现自动化

我已尝试将 Excel 自动化与 Range.CopyFromRecordSet 结合使用。在这种情况下,较长的备注字段不会被截断,而是在最后导出一些乱码。

【问题讨论】:

  • 能否导出包含备注字段的表格?我问,因为查询中的备忘录字段截断是一个常见问题,如果备忘录在表导出中被截断,那就是另一个问题了。
  • 如果备忘录有 512 个字符的限制,请查看是否可以将其转换为查询中的字符串列并尝试将其导出。在此处发布您的发现。
  • 只有在您执行截断备忘录的操作之一(例如对其进行排序)时,才会在查询中截断备忘录。可以通过使用 Left(MyMemo, 4096) 之类的方法处理备忘录来避免这种情况。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我尝试 CopyRecordset 没有成功 - 请参阅问题的编辑。
  • 啊,垃圾字符可能是一个 vbCrLF,而 Excel 只需要或想要一个 vbCr 或类似的。我现在不记得细节了。
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 2011-05-02
相关资源
最近更新 更多